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
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()))