You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

75 lines
2.4 KiB

# System
import numpy as np
from occwl.solid import Solid
# Test
from tests.test_base import TestBase
class ScaleSolidTester(TestBase):
def test_scale_solid(self):
data_folder = self.test_folder() / "test_data"
self.run_test_on_all_files_in_folder(data_folder)
def run_test(self, solid):
box = solid.exact_box()
#scaled = scale_solid_to_unit_box(solid)
scaled = solid.scale_to_unit_box()
box_of_scaled = scaled.exact_box()
center = box_of_scaled.center()
origin = np.zeros(3)
atol=1e-03
self.assertTrue(np.allclose(center, origin, atol=atol))
max_box_length = box_of_scaled.max_box_length()
self.assertAlmostEqual(max_box_length, 2.0, delta=atol)
class SplitClosedFaceSolidTester(TestBase):
def test_closed_face_split(self):
data_folder = self.test_folder() / "test_data"
self.run_test_on_all_files_in_folder(data_folder)
def run_test(self, solid):
num_original_faces = solid.num_faces()
split_solid = solid.split_all_closed_faces(num_splits=1)
self.assertTrue(split_solid is not None)
num_faces_after_splitting = split_solid.num_faces()
self.assertLessEqual(num_original_faces, num_faces_after_splitting)
class SplitClosedEdgeSolidTester(TestBase):
def test_closed_edge_split(self):
data_folder = self.test_folder() / "test_data"
self.run_test_on_all_files_in_folder(data_folder)
def run_test(self, solid):
num_original_edges = solid.num_edges()
split_solid = solid.split_all_closed_edges()
self.assertTrue(split_solid is not None)
num_edges_after_splitting = split_solid.num_edges()
self.assertLessEqual(num_original_edges, num_edges_after_splitting)
class TransformTester(TestBase):
def test_smoke(self):
box = Solid.make_box(1, 1, 1)
with self.subTest("identity"):
box.transform(
np.array([
[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 1, 0],
]),
copy=True,
)
with self.subTest("nonidentity"):
box.transform(
np.array([
[0, 1, 0, 1.],
[0, 0, 1, 2.],
[1, 0, 0, 3.],
]),
copy=True,
)