def test_floor_equal(self): p2 = Polygon.from_absolute_coordinates([(12,0),(22,0),(22,10),(12,10)]) r2 = Room(p2) floor = Floor("Building 1", "Floor1", [self.room1,r2]) floor2 = Floor("Building 1", "Floor1",[self.room1,r2]) self.assertEqual(floor,floor2) floor3 = Floor("Building 1", "Floor", [self.room1,r2]) self.assertNotEqual(floor, floor3) floor3 = Floor("Building", "Floor1", [self.room1,r2]) self.assertNotEqual(floor, floor3) floor3 = Floor("Building 1", "Floor1", [self.room1]) self.assertNotEqual(floor, floor3)
def test_floor_encoding_and_decoding(self): p2 = Polygon.from_absolute_coordinates([(12,0),(22,0),(22,10),(12,10)]) r2 = Room(p2) f1 = Floor("Building cool name","Floor cool name", [self.room1,r2]) f_dump = json.dumps(f1.to_serializable()) f_load = json.loads(f_dump) f2 = Floor.from_serializable(f_load) self.assertEqual(f1,f2)
def test_calculate_scale_amount_and_trasform(self): polygon = Polygon.from_absolute_coordinates( [(0,0),(1024,0),(1024,1024),(2048,1024),(2048,2048),(0,2048)] ) room = Room(polygon) f = Floor("Pippo", "disneyland", [room]) self.assertEqual(f.max_output_size / 2048, f.calculate_scale_amount()) f.normalize() for point in f.rooms[0].polygon.points: self.assertTrue(point.x <= f.max_output_size) self.assertTrue(point.y <= f.max_output_size)
def test_floor_to_serializable(self): p2 = Polygon.from_absolute_coordinates([(12,0),(22,0),(22,10),(12,10)]) r2 = Room(p2) f = Floor("Building cool name","Floor cool name", [self.room1, r2]) self.assertEqual( f.to_serializable() , { "walls" : [], "windows" : [], "b_id" : f.b_id, "f_id" : f.f_id, "rooms" : [self.room1.to_serializable(), r2.to_serializable()] })
def test_associate_text_to_rooms(self): p2 = Polygon.from_absolute_coordinates([(12,0),(22,0),(22,10),(12,10)]) r2 = Room(p2) t1 = Text("Text room 1", Point(5,5)) t2 = Text("Text room 2", Point(15,8)) t3 = Text("Text outside",Point(11,5)) floor = Floor("Building 1", "Floor1",[self.room1, r2]) floor.associate_room_texts([t1,t2,t3]) self.assertEqual( len(self.room1.texts), 1 ) self.assertTrue( len(r2.texts) == 1 ) self.assertTrue( t1 in self.room1.texts ) self.assertTrue( t2 in r2.texts )
def __init__(self, filename): """ Try reading a dxf file pointed by filename and save the floor in the respective attribute. Arguments: - filename: string rapresents the filename with path of the dxf file. Raise: - FileUpdateException in case of impossibility to identify building, floor or rooms. Initialise a DxfReader, try to read a dxf file and associate the texts found to the respective room. Call the FloorInference class to find a standard floor id, and save the results of the operations in the floor attribute as a Floor object. """ self._filename = filename self._basename = os.path.basename(filename) self.floor = None self._read_dxf(self._filename) self._extract_entities() b_id = self._get_b_id(self._basename) if not b_id: raise FileUpdateException( "It was not possible to identify the building associated to the DXF file" ) f_id = FloorInference.get_identifier(self._basename, self._grabber) if not f_id: raise FileUpdateException( "It was not possible to identify the floor associated to the DXF file" ) self.floor = Floor(b_id, f_id, self._rooms, self._wall_lines, self._window_lines) if self.floor.n_rooms == 0: raise FileUpdateException("The floor read has no rooms: " + self._filename) self.floor.associate_room_texts(self._texts) self.floor.normalize() self.floor.discard_tiny_lines()
def test_associate_text_to_rooms2(self): p2 = Polygon.from_absolute_coordinates([(6,0),(12,0),(12,10),(11,10),(11,4),(6,4)]) r2 = Room(p2) t1_1 = Text("Text room 1",Point(2,2)) t1_2 = Text("Text room 1",Point(8,8)) t2_1 = Text("Text room 2",Point(7,2)) t2_2 = Text("Text room 2",Point(11,8)) t_none = Text("Text none",Point(5,12)) floor = Floor("Building 1", "Floor1",[ self.room1,r2]) floor.associate_room_texts([t1_1,t1_2,t2_1,t2_2,t_none]) self.assertTrue( len(self.room1.texts) == 2 ) self.assertTrue( len(r2.texts) == 2 ) self.assertTrue( t1_1 in self.room1.texts ) self.assertTrue( t1_2 in self.room1.texts ) self.assertTrue( t2_1 in r2.texts ) self.assertTrue( t2_2 in r2.texts ) self.assertTrue( t1_1 in self.room1.texts ) self.assertTrue( t_none not in self.room1.texts )
def setUp(self): self.f = Floor("Pippo", "disneyland") self.polygon1 = Polygon.from_absolute_coordinates([(0,0),(5,0),(5,5),(10,5),(10,10),(0,10)]) self.room1 = Room(self.polygon1)