def test_building_init(): """Test the initialization of Building objects and basic properties.""" pts_1 = (Point3D(0, 0, 3), Point3D(0, 10, 3), Point3D(10, 10, 3), Point3D(10, 0, 3)) pts_2 = (Point3D(10, 0, 3), Point3D(10, 10, 3), Point3D(20, 10, 3), Point3D(20, 0, 3)) pts_3 = (Point3D(0, 10, 3), Point3D(0, 20, 3), Point3D(10, 20, 3), Point3D(10, 10, 3)) pts_4 = (Point3D(10, 10, 3), Point3D(10, 20, 3), Point3D(20, 20, 3), Point3D(20, 10, 3)) room2d_1 = Room2D('Office1', Face3D(pts_1), 3) room2d_2 = Room2D('Office2', Face3D(pts_2), 3) room2d_3 = Room2D('Office3', Face3D(pts_3), 3) room2d_4 = Room2D('Office4', Face3D(pts_4), 3) story = Story('Office_Floor', [room2d_1, room2d_2, room2d_3, room2d_4]) story.solve_room_2d_adjacency(0.01) story.set_outdoor_window_parameters(SimpleWindowRatio(0.4)) story.multiplier = 4 building = Building('Office_Building_1234', [story]) building.display_name = 'Office Building' str(building) # test the string representation assert building.identifier == 'Office_Building_1234' assert building.display_name == 'Office Building' assert len(building.unique_stories) == len( building.unique_stories_above_ground) == 1 assert len(building.all_stories()) == 4 assert len(building.unique_room_2ds) == 4 assert len(building.all_room_2ds()) == 16 for story in building.unique_stories: assert isinstance(story, Story) assert story.has_parent for story in building.all_stories(): assert isinstance(story, Story) assert story.has_parent for room in building.unique_room_2ds: assert isinstance(room, Room2D) assert room.has_parent for room in building.all_room_2ds(): assert isinstance(room, Room2D) assert room.has_parent assert building.height == 15 assert building.story_count == building.story_count_above_ground == 4 assert building.height_from_first_floor == building.height_above_ground == 12 assert building.footprint_area == 100 * 4 assert building.floor_area == 100 * 4 * 4 assert building.exterior_wall_area == 60 * 4 * 4 assert building.exterior_aperture_area == 60 * 4 * 4 * 0.4 assert building.volume == 100 * 3 * 4 * 4
def test_building_window_shading_parameters(): """Test the Building set_outdoor_window_parameters method.""" pts_1 = (Point3D(0, 0, 3), Point3D(0, 10, 3), Point3D(10, 10, 3), Point3D(10, 0, 3)) pts_2 = (Point3D(10, 0, 3), Point3D(10, 10, 3), Point3D(20, 10, 3), Point3D(20, 0, 3)) pts_3 = (Point3D(0, 10, 3), Point3D(0, 20, 3), Point3D(10, 20, 3), Point3D(10, 10, 3)) pts_4 = (Point3D(10, 10, 3), Point3D(10, 20, 3), Point3D(20, 20, 3), Point3D(20, 10, 3)) room2d_1 = Room2D('Office1', Face3D(pts_1), 3) room2d_2 = Room2D('Office2', Face3D(pts_2), 3) room2d_3 = Room2D('Office3', Face3D(pts_3), 3) room2d_4 = Room2D('Office4', Face3D(pts_4), 3) story = Story('Office_Floor', [room2d_1, room2d_2, room2d_3, room2d_4]) story.solve_room_2d_adjacency(0.01) story.multiplier = 4 building = Building('Office_Building', [story]) assert building.exterior_aperture_area == 0 assert building.unique_room_2ds[0].window_parameters[2] is None ashrae_base = SimpleWindowRatio(0.4) story.set_outdoor_window_parameters(ashrae_base) assert building.exterior_aperture_area == 60 * 4 * 4 * 0.4 assert building.unique_room_2ds[0].window_parameters[2] == ashrae_base assert building.unique_room_2ds[0].shading_parameters[2] is None overhang = Overhang(1) story.set_outdoor_shading_parameters(overhang) assert building.unique_room_2ds[0].shading_parameters[2] == overhang assert len(building.unique_stories) == 1 assert len(building.all_stories()) == 4 assert len(building.unique_room_2ds) == 4 building.separate_top_bottom_floors() assert len(building.unique_stories) == 3 assert len(set(story.identifier for story in building.unique_stories)) == 3 assert len(building.all_stories()) == 4 assert len(building.unique_room_2ds) == 12