def test_reflect(): """Test the Building reflect method.""" pts = (Point3D(1, 1, 2), Point3D(2, 1, 2), Point3D(2, 2, 2), Point3D(1, 2, 2)) plane = Plane(Vector3D(0, 0, 1), Point3D(0, 0, 2)) room = Room2D('Square_Shoebox', Face3D(pts, plane), 3) story = Story('Office_Floor', [room]) story.multiplier = 4 building = Building('Office_Building', [story]) origin_1 = Point3D(1, 0, 2) normal_1 = Vector3D(1, 0, 0) plane_1 = Plane(normal_1, origin_1) test_1 = building.duplicate() test_1.reflect(plane_1) assert test_1.unique_stories[0].room_2ds[0].floor_geometry[ -1].x == pytest.approx(1, rel=1e-3) assert test_1.unique_stories[0].room_2ds[0].floor_geometry[ -1].y == pytest.approx(1, rel=1e-3) assert test_1.unique_stories[0].room_2ds[0].floor_geometry[ -1].z == pytest.approx(2, rel=1e-3) assert test_1.unique_stories[0].room_2ds[0].floor_geometry[ 1].x == pytest.approx(0, rel=1e-3) assert test_1.unique_stories[0].room_2ds[0].floor_geometry[ 1].y == pytest.approx(2, rel=1e-3) assert test_1.unique_stories[0].room_2ds[0].floor_geometry[ 1].z == pytest.approx(2, rel=1e-3)
def test_rotate_xy(): """Test the Building rotate_xy method.""" pts = (Point3D(1, 1, 2), Point3D(2, 1, 2), Point3D(2, 2, 2), Point3D(1, 2, 2)) plane = Plane(Vector3D(0, 0, 1), Point3D(0, 0, 2)) room = Room2D('Square_Shoebox', Face3D(pts, plane), 3) story = Story('Office_Floor', [room]) story.multiplier = 4 building = Building('Office_Building', [story]) origin_1 = Point3D(1, 1, 0) test_1 = building.duplicate() test_1.rotate_xy(180, origin_1) assert test_1.unique_stories[0].room_2ds[0].floor_geometry[ 0].x == pytest.approx(1, rel=1e-3) assert test_1.unique_stories[0].room_2ds[0].floor_geometry[ 0].y == pytest.approx(1, rel=1e-3) assert test_1.unique_stories[0].room_2ds[0].floor_geometry[ 0].z == pytest.approx(2, rel=1e-3) assert test_1.unique_stories[0].room_2ds[0].floor_geometry[ 2].x == pytest.approx(0, rel=1e-3) assert test_1.unique_stories[0].room_2ds[0].floor_geometry[ 2].y == pytest.approx(0, rel=1e-3) assert test_1.unique_stories[0].room_2ds[0].floor_geometry[ 2].z == pytest.approx(2, rel=1e-3) test_2 = building.duplicate() test_2.rotate_xy(90, origin_1) assert test_2.unique_stories[0].room_2ds[0].floor_geometry[ 0].x == pytest.approx(1, rel=1e-3) assert test_2.unique_stories[0].room_2ds[0].floor_geometry[ 0].y == pytest.approx(1, rel=1e-3) assert test_2.unique_stories[0].room_2ds[0].floor_geometry[ 0].z == pytest.approx(2, rel=1e-3) assert test_2.unique_stories[0].room_2ds[0].floor_geometry[ 2].x == pytest.approx(0, rel=1e-3) assert test_2.unique_stories[0].room_2ds[0].floor_geometry[ 2].y == pytest.approx(2, rel=1e-3) assert test_2.unique_stories[0].room_2ds[0].floor_geometry[ 2].z == pytest.approx(2, rel=1e-3) assert building.floor_area == test_1.floor_area assert building.volume == test_1.volume assert building.height_from_first_floor == test_1.height_from_first_floor assert building.height == 14
def test_move(): """Test the Building move method.""" pts_1 = (Point3D(0, 0, 3), Point3D(10, 0, 3), Point3D(10, 10, 3), Point3D(0, 10, 3)) pts_2 = (Point3D(10, 0, 3), Point3D(20, 0, 3), Point3D(20, 10, 3), Point3D(10, 10, 3)) room2d_1 = Room2D('Office_1', Face3D(pts_1), 3) room2d_2 = Room2D('Office_2', Face3D(pts_2), 3) story = Story('Office_Floor', [room2d_1, room2d_2]) story.solve_room_2d_adjacency(0.01) story.multiplier = 4 building = Building('Office_Building', [story]) vec_1 = Vector3D(2, 2, 2) new_b = building.duplicate() building.move(vec_1) assert building.unique_stories[0].room_2ds[0].floor_geometry[0] == Point3D( 2, 2, 5) assert building.unique_stories[0].room_2ds[0].floor_geometry[1] == Point3D( 12, 2, 5) assert building.unique_stories[0].room_2ds[0].floor_geometry[2] == Point3D( 12, 12, 5) assert building.unique_stories[0].room_2ds[0].floor_geometry[3] == Point3D( 2, 12, 5) assert building.unique_stories[0].room_2ds[1].floor_geometry[0] == Point3D( 12, 2, 5) assert building.unique_stories[0].room_2ds[1].floor_geometry[1] == Point3D( 22, 2, 5) assert building.unique_stories[0].room_2ds[1].floor_geometry[2] == Point3D( 22, 12, 5) assert building.unique_stories[0].room_2ds[1].floor_geometry[3] == Point3D( 12, 12, 5) assert building.floor_area == new_b.floor_area assert building.volume == new_b.volume assert building.height_from_first_floor == new_b.height_from_first_floor assert building.height == 17
def test_scale(): """Test the Building scale method.""" pts_1 = (Point3D(0, 0, 3), Point3D(10, 0, 3), Point3D(10, 10, 3), Point3D(0, 10, 3)) pts_2 = (Point3D(10, 0, 3), Point3D(20, 0, 3), Point3D(20, 10, 3), Point3D(10, 10, 3)) room2d_1 = Room2D('Office1', Face3D(pts_1), 3) room2d_2 = Room2D('Office2', Face3D(pts_2), 3) story = Story('Office_Floor', [room2d_1, room2d_2]) story.solve_room_2d_adjacency(0.01) story.multiplier = 4 building = Building('Office_Building', [story]) new_b = building.duplicate() new_b.scale(2) assert new_b.unique_stories[0].room_2ds[0].floor_geometry[0] == Point3D( 0, 0, 6) assert new_b.unique_stories[0].room_2ds[0].floor_geometry[1] == Point3D( 20, 0, 6) assert new_b.unique_stories[0].room_2ds[0].floor_geometry[2] == Point3D( 20, 20, 6) assert new_b.unique_stories[0].room_2ds[0].floor_geometry[3] == Point3D( 0, 20, 6) assert new_b.unique_stories[0].room_2ds[1].floor_geometry[0] == Point3D( 20, 0, 6) assert new_b.unique_stories[0].room_2ds[1].floor_geometry[1] == Point3D( 40, 0, 6) assert new_b.unique_stories[0].room_2ds[1].floor_geometry[2] == Point3D( 40, 20, 6) assert new_b.unique_stories[0].room_2ds[1].floor_geometry[3] == Point3D( 20, 20, 6) assert new_b.floor_area == building.floor_area * 2**2 assert new_b.volume == building.volume * 2**3 assert new_b.height_from_first_floor == building.height_from_first_floor * 2 assert new_b.height == 30
def test_duplicate(): """Test what happens to energy properties during duplication.""" mass_set = ConstructionSet('Thermal Mass Construction Set') 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('OfficeFloor', [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_original = Building('OfficeBuilding', [story]) building_dup_1 = building_original.duplicate() assert building_original.properties.energy.host is building_original assert building_dup_1.properties.energy.host is building_dup_1 assert building_original.properties.energy.host is not \ building_dup_1.properties.energy.host assert building_original.properties.energy.construction_set == \ building_dup_1.properties.energy.construction_set building_dup_1.properties.energy.construction_set = mass_set assert building_original.properties.energy.construction_set != \ building_dup_1.properties.energy.construction_set building_dup_2 = building_dup_1.duplicate() assert building_dup_1.properties.energy.construction_set == \ building_dup_2.properties.energy.construction_set building_dup_2.properties.energy.construction_set = None assert building_dup_1.properties.energy.construction_set != \ building_dup_2.properties.energy.construction_set