Files
ConformalLabpp/doc/api/tests.md
Tarik Moussa e28aee7051
All checks were successful
C++ Tests / test-fast (push) Successful in 2m20s
C++ Tests / test-cgal (push) Has been skipped
docs: Mathematiker-Onboarding — Theorie, Validierung, Beispiel-Meshes, 170 Tests
Ziel: einem interessierten Mathematiker ermöglichen, die bisherige Arbeit
      unabhängig zu validieren und eigene Forschung beizutragen.

Neu:
  doc/math/discrete-conformal-theory.md
      Kompakte mathematische Einführung (DCE, Variationsprinzip, drei
      Geometriemodi, Holonomie, Periodenmatrix) für Riemann-Flächen-Kenner.

  doc/math/validation.md
      Analytisch bekannte Sollwerte + wie man sie mit dem Code prüft:
      Gauss–Bonnet (χ), τ ∈ Fundamentaldomäne (3 Invarianten), Symmetrie-
      Argumente für τ=i (4-fach) und τ=e^{iπ/3} (6-fach), Newton-Konvergenz,
      Gradienten-Check (FD), Holonomie-Kommutator. Reviewer-Checkliste.

  CONTRIBUTING.md (Root)
      Gitea/GitHub-Standard: CONTRIBUTING.md im Root-Verzeichnis als
      Kurzreferenz mit Links zu doc/contributing.md und den Math-Docs.

  code/data/off/torus_4x4.off   — 16 Vertices, 32 Flächen, Genus 1
  code/data/off/torus_8x8.off   — 64 Vertices, 128 Flächen, Genus 1
  code/data/off/torus_hex_6x6.off — 36 Vertices, 72 Flächen, 6-fach Sym.

Aktualisiert:
  README.md              — 158 → 170 Tests, zwei neue Math-Links in Tabelle
  doc/api/tests.md       — 28 Suiten, 170 Tests, 1 Skip (korrigiert)
  doc/contributing.md    — Testzähler 158+2 → 170+1

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 01:11:00 +02:00

4.8 KiB
Raw Blame History

Test Suites

conformallab_tests — always built (no CGAL)

Pure-math tests, only Eigen required. Covers Java utilities ported in Phase 12.

File What it tests
test_clausen.cpp Clausen Cl₂, Lobachevsky Л, ImLi₂ — values at known points
test_hyper_ideal_utility.cpp Tetrahedron volumes (Meyerhoff / KolpakovMednykh)
test_matrix_utility.cpp Matrix helpers
test_surface_curve_utility.cpp Surface curve utilities
test_discrete_elliptic_utility.cpp Discrete elliptic functions
test_p2_utility.cpp P2 projective utilities
test_hyper_ideal_visualization_utility.cpp Poincaré disk projection, circumcircle

Total: 36 tests, 0 skipped.


conformallab_cgal_tests — built with -DWITH_CGAL_TESTS=ON or -DWITH_CGAL=ON

All tests have CTest prefix cgal. (set via TEST_PREFIX "cgal." in CMakeLists).

Suite File Tests What is verified
ConformalMeshTopology test_conformal_mesh.cpp 4 Euler characteristic, vertex/edge/face counts
ConformalMeshTraversal test_conformal_mesh.cpp 4 Halfedge iteration, valence, opposite
ConformalMeshProperties test_conformal_mesh.cpp 5 Property maps (λ, θ, idx, α, geometry type)
ConformalMeshValidity test_conformal_mesh.cpp 1 CGAL validity for all factory meshes
HyperIdealFunctional test_hyper_ideal_functional.cpp 7 FD gradient checks + Hessian symmetry
SphericalFunctional test_spherical_functional.cpp 12 Angle formula + gradient + gauge-fix
EuclideanFunctional test_euclidean_functional.cpp 11 Angle formula + gradient
EuclideanHessian test_euclidean_hessian.cpp 9 Cotangent Laplacian structure, FD agreement, PSD, null space
SphericalHessian test_spherical_hessian.cpp 8 Derivative correctness, NSD at equilibrium
NewtonSolver test_newton_solver.cpp 11 Convergence: Euclidean ×3, Spherical ×4, HyperIdeal ×4
SparseQRFallback test_newton_solver.cpp 3 Full-rank LDLT · singular matrix → QR · closed mesh gauge mode
MeshIO test_mesh_io.cpp 9 OFF/OBJ round-trips, error handling
Pipeline test_pipeline.cpp 5 End-to-end: build → setup → solve → export → reload
Layout test_layout.cpp 8 Edge-length preservation (Eucl./Spher.), Poincaré disk layout
Serialization test_layout.cpp 2 JSON and XML round-trips (DOF vector + layout UVs)
GaussBonnet test_phase6.cpp 8 χ, genus, sum/RHS, deficit, check, enforce
CutGraph test_phase6.cpp 6 Tree-cotree, open/closed meshes, flagindex consistency
HyperbolicTrilateration test_phase6.cpp 4 Möbius + law of cosines: exact distances, disk interior, off-origin
Normalisation test_phase6.cpp 4 Euclidean centroid, length ratios, Möbius centring
MobiusMap test_phase7.cpp 8 Identity, inverse, compose, from_three, apply(Vector2d)
BestRootFace test_phase7.cpp 2 Valid root face selection, interior bonus
HalfedgeUV test_phase7.cpp 4 Size = #halfedges, seam consistency, boundary halfedges = 0
PriorityBFS test_phase7.cpp 3 Success, no seam on open meshes, all vertices placed
NormaliseEuclidean test_phase7.cpp 2 UV centroid = 0, halfedge_uv centroid = 0
PeriodMatrix test_phase7.cpp 7 τ ∈ , SL(2,) reduction, exception outside
FundamentalDomain test_phase7.cpp 7 Genus-1 parallelogram CCW, generators, g > 1 empty
TilingCopy/Neighbourhood test_phase7.cpp 4 Translation correct, tile count
CuttingUtility test_geometry_utils.cpp 3 point_in_triangle_2d: false, true, unit triangle (Java CuttinUtilityTest)
UnwrapUtility test_geometry_utils.cpp 2 corner angle: collinear → π, equilateral → π/3 (Java UnwrapUtilityTest)
ConvergenceUtility test_geometry_utils.cpp 6 circumradius + scale-invariant R_f/√A (Java ConvergenceUtilityTests)
HomologyGenerators test_geometry_utils.cpp 1 GTEST_SKIP stub — genus-2 mesh missing (Java HomologyTest Test 7, Phase 9c)

Total: 170 tests, 1 intentional skip.

The skip is HomologyGenerators.Genus2_FourGeneratorPaths_BLOCKED — blocked until a genus-2 mesh is available (Phase 9c). It corresponds to a Java @Ignore-annotated test in the original library.


Running tests

# All CGAL tests
ctest --test-dir build -R "^cgal\." --output-on-failure

# One suite
./build/conformallab_cgal_tests --gtest_filter="PeriodMatrix*"

# One specific test
./build/conformallab_cgal_tests --gtest_filter="PeriodMatrix.TauInUpperHalfPlane"

# Verbose output with timing
./build/conformallab_cgal_tests --gtest_filter="NewtonSolver*" --gtest_print_time=1