Ejemplo n.º 1
0
    def _normalizeNeighbors(self, zone):
        '''
        If a zone has the same neighbor with more than one OPEN_SPACE type,
        remove the generic one NeighborType.OPEN_SPACE

        :rtype: Zone new object
        '''
        zoneIdToType = {}
        for neighbor in zone.getNeighbors():
            zoneId = neighbor.getZoneId()
            if zoneId in zoneIdToType:
                types = zoneIdToType[zoneId]
            else:
                types = []
                zoneIdToType[zoneId] = types

            types.append(neighbor.getType())

        for types in zoneIdToType.values():
            if NeighborType.OPEN_SPACE_MASTER in types \
                or NeighborType.OPEN_SPACE_SLAVE in types:
                if NeighborType.OPEN_SPACE in types:
                    types.remove(NeighborType.OPEN_SPACE)

        zone = Zone(zone.getName(), zone.getDevices(), zone.getLevel(), [], {},
                    zone.isExternal(), zone.getDisplayIcon(),
                    zone.getDisplayOrder())
        for zoneId in zoneIdToType.keys():
            for type in zoneIdToType[zoneId]:
                zone = zone.addNeighbor(Neighbor(zoneId, type))

        return zone
Ejemplo n.º 2
0
 def testZoneCtor_validParams_gettersReturnValidValues(self):
     zoneName = 'bed room'
     zone = Zone(zoneName, [self.light], Level.SECOND_FLOOR)
     self.assertEqual(zoneName, zone.getName())
     self.assertEqual(Level.SECOND_FLOOR, zone.getLevel())
     self.assertEqual(
         str(Level.SECOND_FLOOR) + '_' + zoneName, zone.getId())
     self.assertEqual(1, len(zone.getDevices()))