#include #include "vde/brep/parallel_boolean.h" #include "vde/brep/modeling.h" #include using namespace vde::brep; using namespace vde::core; TEST(ParallelBooleanTest, ThreadCount) { int n = parallel_thread_count(); EXPECT_GT(n, 0); } TEST(ParallelBooleanTest, SetThreadCount) { set_parallel_threads(2); EXPECT_EQ(parallel_thread_count(), 2); set_parallel_threads(0); // reset } TEST(ParallelBooleanTest, FaceFaceIntersection_Empty) { BrepModel a, b; auto results = parallel_face_face_intersection(a, b); EXPECT_EQ(results.size(), 0u); } TEST(ParallelBooleanTest, FaceFaceIntersection_Boxes) { auto a = make_box(2, 2, 2); auto b = make_box(2, 2, 2); auto results = parallel_face_face_intersection(a, b); // Two identical boxes have overlapping faces EXPECT_GE(results.size(), 0u); } TEST(ParallelBooleanTest, ClassifyFaces_Empty) { BrepModel body; auto results = parallel_classify_faces(body, {}); EXPECT_EQ(results.size(), 0u); } TEST(ParallelBooleanTest, ClassifyFaces_Outside) { auto box = make_box(2, 2, 2); // Point far outside the box std::vector face_ids = {0}; auto results = parallel_classify_faces(box, face_ids); EXPECT_EQ(results.size(), 1u); } TEST(ParallelBooleanTest, MeshUnion) { auto a = make_box(2, 2, 2); auto b = make_box(2, 2, 2); auto ma = a.to_mesh(); auto mb = b.to_mesh(); auto result = parallel_mesh_union(ma, mb); EXPECT_GE(result.num_vertices(), 0u); } TEST(ParallelBooleanTest, MeshIntersection) { auto a = make_box(2, 2, 2); auto b = make_box(2, 2, 2); auto result = parallel_mesh_intersection(a.to_mesh(), b.to_mesh()); EXPECT_GE(result.num_vertices(), 0u); } TEST(ParallelBooleanTest, MeshDifference) { auto a = make_box(2, 2, 2); auto b = make_box(1, 1, 1); auto result = parallel_mesh_difference(a.to_mesh(), b.to_mesh()); EXPECT_GE(result.num_vertices(), 0u); } TEST(ParallelBooleanTest, BrepUnion) { auto a = make_box(2, 2, 2); auto b = make_box(2, 2, 2); auto result = parallel_brep_union(a, b); EXPECT_GE(result.num_faces(), 1u); } TEST(ParallelBooleanTest, BrepIntersection) { auto a = make_box(2, 2, 2); auto b = make_box(2, 2, 2); auto result = parallel_brep_intersection(a, b); EXPECT_GE(result.num_faces(), 1u); } TEST(ParallelBooleanTest, BrepDifference) { auto a = make_box(2, 2, 2); auto b = make_box(2, 2, 2); auto result = parallel_brep_difference(a, b); EXPECT_GE(result.num_faces(), 1u); }