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
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,
|
|
)
|