#include #include "vde/mesh/parallel_mc.h" #include "vde/core/aabb.h" #include using namespace vde::mesh; using vde::core::AABB3D; static double sphere_sdf(double x, double y, double z) { return std::sqrt(x*x+y*y+z*z)-1.0; } TEST(ParallelMCTest, SphereBasic) { AABB3D b({-2,-2,-2},{2,2,2}); ParallelMCConfig c{32}; auto m=parallel_marching_cubes(sphere_sdf,b,c); EXPECT_GT(m.num_vertices(),0u); } TEST(ParallelMCTest, SphereHighRes) { AABB3D b({-2,-2,-2},{2,2,2}); auto m=parallel_marching_cubes(sphere_sdf,b,{64}); EXPECT_GT(m.num_faces(),0u); } TEST(ParallelMCTest, EmptySpace) { AABB3D b({5,5,5},{6,6,6}); auto m=parallel_marching_cubes(sphere_sdf,b,{16}); EXPECT_EQ(m.num_faces(),0u); } TEST(ParallelMCTest, AdaptiveSphere) { AABB3D b({-2,-2,-2},{2,2,2}); ParallelMCConfig c{32,0,true,0.05,3}; auto m=parallel_adaptive_mc(sphere_sdf,b,c); EXPECT_GT(m.num_vertices(),0u); } TEST(ParallelMCTest, CustomThreads) { AABB3D b({-1.5,-1.5,-1.5},{1.5,1.5,1.5}); ParallelMCConfig c{32,2}; auto m=parallel_marching_cubes(sphere_sdf,b,c); EXPECT_GT(m.num_faces(),0u); }