def test_sub_faces_invalid(): """Test the adding and removing of invalid sub-faces.""" face_face3d = Face3D.from_rectangle(10, 10, Plane(o=Point3D(0, 0, 3))) ap_face3d = Face3D.from_rectangle(2, 2, Plane(o=Point3D(2, 2, 3))) dr_face3d = Face3D.from_rectangle(2, 2, Plane(o=Point3D(7, 7, 3))) dr_face3d_invalid_1 = Face3D.from_rectangle(2, 2, Plane(o=Point3D(7, 7, 1))) dr_face3d_invalid_2 = \ Face3D([Point3D(0, 0, 0), Point3D(0, 1, 0), Point3D(0, 1, 3), Point3D(0, 0, 3)]) face = Face('Test_Roof', face_face3d) aperture = Aperture('Test_Skylight', ap_face3d) door = Door('Test_Trap_Door', dr_face3d) invalid_aperture_1 = Aperture('Test_Skylight', dr_face3d_invalid_1) invalid_aperture_2 = Aperture('Test_Skylight', dr_face3d_invalid_2) with pytest.raises(AssertionError): face.add_aperture(door) with pytest.raises(AssertionError): face.add_door(aperture) face.add_aperture(invalid_aperture_1) with pytest.raises(ValueError): face.check_apertures_valid(0.01, 1) face.remove_apertures() face.add_aperture(invalid_aperture_2) with pytest.raises(ValueError): face.check_apertures_valid(0.01, 1)
def test_add_remove_aperture(): """Test the adding and removing of an aperture to a Face.""" face_face3d = Face3D.from_rectangle(10, 10, Plane(o=Point3D(0, 0, 3))) ap_face3d = Face3D.from_rectangle(2, 2, Plane(o=Point3D(2, 2, 3))) face = Face('Test_Roof', face_face3d) aperture = Aperture('Test_Skylight', ap_face3d) face.add_aperture(aperture) assert len(face.apertures) == 1 assert len(face.apertures[0].geometry.vertices) == 4 assert face.apertures[0].area == pytest.approx(4, rel=1e-2) assert face.apertures[0].parent is face assert len(face.punched_vertices) == 10 assert face.punched_geometry.area == 96 assert face.check_apertures_valid(0.01, 1) face.remove_apertures() assert len(face.apertures) == 0 assert len(face.punched_vertices) == 4 assert face.punched_geometry.area == 100
def test_add_remove_apertures(): """Test the adding and removing of multiple apertures to a Face.""" face_face3d = Face3D.from_rectangle(10, 10, Plane(o=Point3D(0, 0, 3))) ap_face3d_1 = Face3D.from_rectangle(2, 2, Plane(o=Point3D(2, 2, 3))) ap_face3d_2 = Face3D.from_rectangle(2, 2, Plane(o=Point3D(7, 7, 3))) face = Face('Test_Roof', face_face3d) aperture_1 = Aperture('Test_Skylight_1', ap_face3d_1) aperture_2 = Aperture('Test_Skylight_2', ap_face3d_2) face.add_apertures([aperture_1, aperture_2]) assert len(face.apertures) == 2 assert face.apertures[0].parent is face assert face.apertures[1].parent is face assert len(face.punched_vertices) == 16 assert face.punched_geometry.area == 92 assert face.check_apertures_valid(0.01, 1) face.remove_apertures() assert len(face.apertures) == 0 assert len(face.punched_vertices) == 4 assert face.punched_geometry.area == 100