Phase 5 complete: layout.hpp - euclidean_layout(): BFS unfolding in ℝ² using trilaterate_2d - spherical_layout(): BFS on S² using trilaterate_sph (spherical law of cosines) - hyper_ideal_layout(): BFS in Poincaré disk (tanh(d/2) Euclidean approx) - save_layout_off(): convenience OFF writer for 2-D and 3-D layouts serialization.hpp - save/load_result_json(): nlohmann/json; stores DOF vector + uv/pos layout - save/load_result_xml(): hand-written writer/parser; same schema conformallab_cli.cpp (rewritten) - CLI11 interface: -i/-o/-g/-j/-x/-s/-v - Dispatches to euclidean / spherical / hyper_ideal pipeline - Runs Newton, computes layout, saves OFF + JSON + XML examples/example_layout.cpp - Full round-trip demo: solve → layout → JSON/XML → reload → verify tests/cgal/test_layout.cpp (8 tests) - Euclidean_PreservesEdgeLengths, CorrectVertexCount, TriangleIsNonDegenerate - Spherical_PreservesArcLengths, PositionsOnUnitSphere - HyperIdeal_SuccessAndFinitePositions - Serialization.JSON_RoundTrip, XML_RoundTrip All 95 CGAL tests pass (2 skipped — Hessian stubs unchanged). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
69 lines
2.6 KiB
CMake
69 lines
2.6 KiB
CMake
# tests/cgal/CMakeLists.txt
|
|
#
|
|
# CGAL-dependent test target. Only built when -DWITH_CGAL=ON.
|
|
# Requires Boost (find_package(Boost REQUIRED) is called in the root CMakeLists).
|
|
#
|
|
# Run with:
|
|
# cmake -S code -B build -DWITH_CGAL=ON
|
|
# cmake --build build --target conformallab_cgal_tests
|
|
# ctest --test-dir build -R cgal
|
|
|
|
add_executable(conformallab_cgal_tests
|
|
# ── Phase 3a: mesh infrastructure ──────────────────────────────────────
|
|
test_conformal_mesh.cpp
|
|
|
|
# ── Phase 3b: HyperIdealFunctional ─────────────────────────────────────
|
|
test_hyper_ideal_functional.cpp
|
|
|
|
# ── Phase 3c + 3e: SphericalFunctional + gauge-fix ────────────────────
|
|
test_spherical_functional.cpp
|
|
|
|
# ── Phase 3d: EuclideanCyclicFunctional ───────────────────────────────
|
|
test_euclidean_functional.cpp
|
|
|
|
# ── Phase 3f: Hessians (cotangent Laplacian, spherical + Euclidean) ───
|
|
test_euclidean_hessian.cpp
|
|
test_spherical_hessian.cpp
|
|
|
|
# ── Phase 4a: Newton solver ────────────────────────────────────────────
|
|
test_newton_solver.cpp
|
|
|
|
# ── Phase 4b: Mesh I/O (CGAL::IO) ─────────────────────────────────────
|
|
test_mesh_io.cpp
|
|
|
|
# ── Phase 4c: End-to-end pipeline + user examples ─────────────────────
|
|
test_pipeline.cpp
|
|
|
|
# ── Phase 5: Layout / embedding + serialization ────────────────────────
|
|
test_layout.cpp
|
|
)
|
|
|
|
target_include_directories(conformallab_cgal_tests SYSTEM PRIVATE
|
|
${CMAKE_SOURCE_DIR}/deps/eigen-3.4.0
|
|
${CMAKE_SOURCE_DIR}/deps/CGAL-6.1.1/include
|
|
${CMAKE_SOURCE_DIR}/deps/single_includes
|
|
${Boost_INCLUDE_DIRS}
|
|
)
|
|
|
|
target_include_directories(conformallab_cgal_tests PRIVATE
|
|
${CMAKE_SOURCE_DIR}/include
|
|
)
|
|
|
|
target_compile_definitions(conformallab_cgal_tests PRIVATE
|
|
CGAL_DISABLE_GMP
|
|
CGAL_DISABLE_MPFR
|
|
)
|
|
|
|
# Suppress warnings from CGAL/Boost headers
|
|
target_compile_options(conformallab_cgal_tests PRIVATE
|
|
$<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-unused-parameter>
|
|
)
|
|
|
|
target_link_libraries(conformallab_cgal_tests PRIVATE GTest::gtest_main)
|
|
|
|
include(GoogleTest)
|
|
gtest_discover_tests(conformallab_cgal_tests
|
|
TEST_PREFIX "cgal."
|
|
DISCOVERY_TIMEOUT 60
|
|
)
|