def test_rotate_xy(): """Test the Story 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('SquareShoebox', Face3D(pts, plane), 3) story = Story('OfficeFloor', [room]) origin_1 = Point3D(1, 1, 0) test_1 = story.duplicate() test_1.rotate_xy(180, origin_1) assert test_1.room_2ds[0].floor_geometry[0].x == pytest.approx(1, rel=1e-3) assert test_1.room_2ds[0].floor_geometry[0].y == pytest.approx(1, rel=1e-3) assert test_1.room_2ds[0].floor_geometry[0].z == pytest.approx(2, rel=1e-3) assert test_1.room_2ds[0].floor_geometry[2].x == pytest.approx(0, rel=1e-3) assert test_1.room_2ds[0].floor_geometry[2].y == pytest.approx(0, rel=1e-3) assert test_1.room_2ds[0].floor_geometry[2].z == pytest.approx(2, rel=1e-3) test_2 = story.duplicate() test_2.rotate_xy(90, origin_1) assert test_2.room_2ds[0].floor_geometry[0].x == pytest.approx(1, rel=1e-3) assert test_2.room_2ds[0].floor_geometry[0].y == pytest.approx(1, rel=1e-3) assert test_2.room_2ds[0].floor_geometry[0].z == pytest.approx(2, rel=1e-3) assert test_2.room_2ds[0].floor_geometry[2].x == pytest.approx(0, rel=1e-3) assert test_2.room_2ds[0].floor_geometry[2].y == pytest.approx(2, rel=1e-3) assert test_2.room_2ds[0].floor_geometry[2].z == pytest.approx(2, rel=1e-3)
def test_duplicate(): """Test what happens to energy properties when duplicating a Room2D.""" 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_original = Story('OfficeFloor', [room2d_1, room2d_2, room2d_3, room2d_4]) story_original.solve_room_2d_adjacency(0.01) story_original.set_outdoor_window_parameters(SimpleWindowRatio(0.4)) story_dup_1 = story_original.duplicate() assert story_original.properties.energy.host is story_original assert story_dup_1.properties.energy.host is story_dup_1 assert story_original.properties.energy.host is not \ story_dup_1.properties.energy.host assert story_original.properties.energy.construction_set == \ story_dup_1.properties.energy.construction_set story_dup_1.properties.energy.construction_set = mass_set assert story_original.properties.energy.construction_set != \ story_dup_1.properties.energy.construction_set room_dup_2 = story_dup_1.duplicate() assert story_dup_1.properties.energy.construction_set == \ room_dup_2.properties.energy.construction_set room_dup_2.properties.energy.construction_set = None assert story_dup_1.properties.energy.construction_set != \ room_dup_2.properties.energy.construction_set
def test_reflect(): """Test the Story 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('SquareShoebox', Face3D(pts, plane), 3) story = Story('OfficeFloor', [room]) origin_1 = Point3D(1, 0, 2) normal_1 = Vector3D(1, 0, 0) plane_1 = Plane(normal_1, origin_1) test_1 = story.duplicate() test_1.reflect(plane_1) assert test_1.room_2ds[0].floor_geometry[-1].x == pytest.approx(1, rel=1e-3) assert test_1.room_2ds[0].floor_geometry[-1].y == pytest.approx(1, rel=1e-3) assert test_1.room_2ds[0].floor_geometry[-1].z == pytest.approx(2, rel=1e-3) assert test_1.room_2ds[0].floor_geometry[1].x == pytest.approx(0, rel=1e-3) assert test_1.room_2ds[0].floor_geometry[1].y == pytest.approx(2, rel=1e-3) assert test_1.room_2ds[0].floor_geometry[1].z == pytest.approx(2, rel=1e-3)
def test_scale(): """Test the Room2D 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('OfficeFloor', [room2d_1, room2d_2]) new_s = story.duplicate() new_s.scale(2) assert new_s.room_2ds[0].floor_geometry[0] == Point3D(0, 0, 6) assert new_s.room_2ds[0].floor_geometry[1] == Point3D(20, 0, 6) assert new_s.room_2ds[0].floor_geometry[2] == Point3D(20, 20, 6) assert new_s.room_2ds[0].floor_geometry[3] == Point3D(0, 20, 6) assert new_s.room_2ds[1].floor_geometry[0] == Point3D(20, 0, 6) assert new_s.room_2ds[1].floor_geometry[1] == Point3D(40, 0, 6) assert new_s.room_2ds[1].floor_geometry[2] == Point3D(40, 20, 6) assert new_s.room_2ds[1].floor_geometry[3] == Point3D(20, 20, 6) assert new_s.floor_area == story.floor_area * 2 ** 2 assert new_s.volume == story.volume * 2 ** 3
def test_move(): """Test the Story 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('Office1', Face3D(pts_1), 3) room2d_2 = Room2D('Office2', Face3D(pts_2), 3) story = Story('OfficeFloor', [room2d_1, room2d_2]) vec_1 = Vector3D(2, 2, 2) new_s = story.duplicate() story.move(vec_1) assert story.room_2ds[0].floor_geometry[0] == Point3D(2, 2, 5) assert story.room_2ds[0].floor_geometry[1] == Point3D(12, 2, 5) assert story.room_2ds[0].floor_geometry[2] == Point3D(12, 12, 5) assert story.room_2ds[0].floor_geometry[3] == Point3D(2, 12, 5) assert story.room_2ds[1].floor_geometry[0] == Point3D(12, 2, 5) assert story.room_2ds[1].floor_geometry[1] == Point3D(22, 2, 5) assert story.room_2ds[1].floor_geometry[2] == Point3D(22, 12, 5) assert story.room_2ds[1].floor_geometry[3] == Point3D(12, 12, 5) assert story.floor_area == new_s.floor_area assert story.volume == new_s.volume