Update all doc test counts to 176 CGAL tests, 0 skipped
Propagates the new baseline (176 passed, 0 skipped) established by the GradientCheck_Hessian implementation across all documentation files that previously referenced the stale counts (174/173/170 + 1-2 skips). Files updated: CLAUDE.md, doc/api/tests.md, doc/contributing.md, doc/getting-started.md, doc/math/novelty-statement.md, doc/math/validation.md, doc/math/validation-protocol.md, scripts/try_it.sh Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
10
CLAUDE.md
10
CLAUDE.md
@@ -244,13 +244,7 @@ Two jobs in `.gitea/workflows/cpp-tests.yml`:
|
|||||||
|
|
||||||
Runner: `eulernest` — self-hosted Raspberry Pi, ARM64, Ubuntu 22.04. Docker image: `git.eulernest.eu/conformallab/ci-cpp:latest`. `test-cgal` needs `test-fast` to pass first (`needs: test-fast`).
|
Runner: `eulernest` — self-hosted Raspberry Pi, ARM64, Ubuntu 22.04. Docker image: `git.eulernest.eu/conformallab/ci-cpp:latest`. `test-cgal` needs `test-fast` to pass first (`needs: test-fast`).
|
||||||
|
|
||||||
Expected results: **36 non-CGAL tests pass**, **174 CGAL tests pass, 2 skipped**.
|
Expected results: **36 non-CGAL tests pass**, **176 CGAL tests pass, 0 skipped**.
|
||||||
|
|
||||||
The 2 intentional skips are Java `@Ignore` ports:
|
|
||||||
- `EuclideanFunctional.GradientCheck_Hessian` — analytic Euclidean Hessian gradient check
|
|
||||||
- `SphericalFunctional.GradientCheck_Hessian` — analytic Spherical Hessian gradient check
|
|
||||||
|
|
||||||
Both are deferred to Phase 9b. Do not remove them.
|
|
||||||
|
|
||||||
## Release state
|
## Release state
|
||||||
|
|
||||||
@@ -298,7 +292,7 @@ Root-level files added at v0.7.0:
|
|||||||
| Full pipeline API for all three geometries | `doc/api/pipeline.md` |
|
| Full pipeline API for all three geometries | `doc/api/pipeline.md` |
|
||||||
| What does each processing unit require/provide (contracts)? | `doc/api/contracts.md` |
|
| What does each processing unit require/provide (contracts)? | `doc/api/contracts.md` |
|
||||||
| How to add a new functional / geometry mode / port from Java | `doc/api/extending.md` |
|
| How to add a new functional / geometry mode / port from Java | `doc/api/extending.md` |
|
||||||
| All 34 test suites, 174+36 tests, individual counts | `doc/api/tests.md` |
|
| All 35 test suites, 176+36 tests, individual counts | `doc/api/tests.md` |
|
||||||
| Phase 8 CGAL package design + Declarative YAML pipeline spec | `doc/api/cgal-package.md` |
|
| Phase 8 CGAL package design + Declarative YAML pipeline spec | `doc/api/cgal-package.md` |
|
||||||
|
|
||||||
### Concepts & specs
|
### Concepts & specs
|
||||||
|
|||||||
@@ -29,8 +29,8 @@ All tests have CTest prefix `cgal.` (set via `TEST_PREFIX "cgal."` in CMakeLists
|
|||||||
| `ConformalMeshProperties` | `test_conformal_mesh.cpp` | 5 | Property maps (λ, θ, idx, α, geometry type) |
|
| `ConformalMeshProperties` | `test_conformal_mesh.cpp` | 5 | Property maps (λ, θ, idx, α, geometry type) |
|
||||||
| `ConformalMeshValidity` | `test_conformal_mesh.cpp` | 1 | CGAL validity for all factory meshes |
|
| `ConformalMeshValidity` | `test_conformal_mesh.cpp` | 1 | CGAL validity for all factory meshes |
|
||||||
| `HyperIdealFunctional` | `test_hyper_ideal_functional.cpp` | 7 | FD gradient checks + Hessian symmetry |
|
| `HyperIdealFunctional` | `test_hyper_ideal_functional.cpp` | 7 | FD gradient checks + Hessian symmetry |
|
||||||
| `SphericalFunctional` | `test_spherical_functional.cpp` | 12 | Angle formula + gradient + gauge-fix *(1 skipped)* |
|
| `SphericalFunctional` | `test_spherical_functional.cpp` | 12 | Angle formula + gradient + gauge-fix + cross-module Hessian check |
|
||||||
| `EuclideanFunctional` | `test_euclidean_functional.cpp` | 12 | Angle formula + gradient *(1 skipped)* |
|
| `EuclideanFunctional` | `test_euclidean_functional.cpp` | 12 | Angle formula + gradient + cross-module Hessian check |
|
||||||
| `EuclideanHessian` | `test_euclidean_hessian.cpp` | 9 | Cotangent Laplacian structure, FD agreement, PSD, null space |
|
| `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 |
|
| `SphericalHessian` | `test_spherical_hessian.cpp` | 8 | Derivative correctness, NSD at equilibrium |
|
||||||
| `NewtonSolver` | `test_newton_solver.cpp` | 11 | Convergence: Euclidean ×3, Spherical ×4, HyperIdeal ×4 |
|
| `NewtonSolver` | `test_newton_solver.cpp` | 11 | Convergence: Euclidean ×3, Spherical ×4, HyperIdeal ×4 |
|
||||||
@@ -59,11 +59,7 @@ All tests have CTest prefix `cgal.` (set via `TEST_PREFIX "cgal."` in CMakeLists
|
|||||||
| `HomologyGenerators` | `test_geometry_utils.cpp` | 1 | Genus-2 cut graph: χ = −2, 4 cut edges (`brezel2.obj`) |
|
| `HomologyGenerators` | `test_geometry_utils.cpp` | 1 | Genus-2 cut graph: χ = −2, 4 cut edges (`brezel2.obj`) |
|
||||||
| `SmokeEuclidean` | `test_scalability_smoke.cpp` | 3 | Smoke tests on real meshes: CatHead (open), Brezel genus-1, Brezel2 genus-2 |
|
| `SmokeEuclidean` | `test_scalability_smoke.cpp` | 3 | Smoke tests on real meshes: CatHead (open), Brezel genus-1, Brezel2 genus-2 |
|
||||||
|
|
||||||
**Total: 176 tests, 2 intentional skips.**
|
**Total: 176 tests, 0 skipped.**
|
||||||
|
|
||||||
The 2 skips are Java `@Ignore` ports — stubs until the analytic Hessian gradient checks are implemented (Phase 9b):
|
|
||||||
- `SphericalFunctional.GradientCheck_Hessian`
|
|
||||||
- `EuclideanFunctional.GradientCheck_Hessian`
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ Two jobs run on push to `dev`/`main` or on pull requests:
|
|||||||
| Job | What it tests | Trigger |
|
| Job | What it tests | Trigger |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| `test-fast` | 36 non-CGAL tests, no Boost | all branches |
|
| `test-fast` | 36 non-CGAL tests, no Boost | all branches |
|
||||||
| `test-cgal` | 170 CGAL tests + 1 skip | `main`, `dev`, PRs only |
|
| `test-cgal` | 176 CGAL tests, 0 skipped | `main`, `dev`, PRs only |
|
||||||
|
|
||||||
A PR is ready to merge when both jobs pass.
|
A PR is ready to merge when both jobs pass.
|
||||||
|
|
||||||
@@ -51,10 +51,7 @@ Every new algorithm needs:
|
|||||||
|
|
||||||
3. **Registration** — add the `.cpp` file to `code/tests/cgal/CMakeLists.txt`.
|
3. **Registration** — add the `.cpp` file to `code/tests/cgal/CMakeLists.txt`.
|
||||||
|
|
||||||
Expected CI result: **36 + 170 tests pass, exactly 1 skipped**.
|
Expected CI result: **36 + 176 tests pass, 0 skipped**.
|
||||||
The skip is an intentional `GTEST_SKIP()` stub for the genus-2 homology test
|
|
||||||
(`cgal.HomologyGenerators.Genus2_FourGeneratorPaths_BLOCKED`) — blocked until a
|
|
||||||
genus-2 mesh is available in Phase 9c. Do not remove it.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ cmake --build build --target conformallab_cgal_tests -j$(nproc)
|
|||||||
ctest --test-dir build -R "^cgal\." --output-on-failure
|
ctest --test-dir build -R "^cgal\." --output-on-failure
|
||||||
```
|
```
|
||||||
|
|
||||||
Expected: **173 tests pass, 1 skipped** (intentional stub for analytic HyperIdeal Hessian, Phase 9b).
|
Expected: **176 tests pass, 0 skipped**.
|
||||||
|
|
||||||
### Mode 3 — Full local build (CLI app + interactive viewer)
|
### Mode 3 — Full local build (CLI app + interactive viewer)
|
||||||
|
|
||||||
@@ -146,7 +146,7 @@ sets x* = 0, so a small perturbation (-0.05) needs only one Newton step.
|
|||||||
bash scripts/try_it.sh
|
bash scripts/try_it.sh
|
||||||
```
|
```
|
||||||
This clones nothing (run from inside the repo), builds the CGAL test suite, runs
|
This clones nothing (run from inside the repo), builds the CGAL test suite, runs
|
||||||
all 173+36 tests, and prints a summary. See `scripts/try_it.sh` for details.
|
all 176+36 tests, and prints a summary. See `scripts/try_it.sh` for details.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ is an open research question that this library is designed to investigate.
|
|||||||
|
|
||||||
### 3.4 — Full test coverage of analytic invariants
|
### 3.4 — Full test coverage of analytic invariants
|
||||||
|
|
||||||
173 CGAL tests verify mathematically provable properties:
|
176 CGAL tests verify mathematically provable properties:
|
||||||
- Gauss–Bonnet: Σ(2π−Θᵥ) = 2π·χ(M) to machine precision
|
- Gauss–Bonnet: Σ(2π−Θᵥ) = 2π·χ(M) to machine precision
|
||||||
- τ ∈ fundamental domain: three inequalities
|
- τ ∈ fundamental domain: three inequalities
|
||||||
- Holonomy closure: [T_a, T_b] = Id (abelian for genus 1)
|
- Holonomy closure: [T_a, T_b] = Id (abelian for genus 1)
|
||||||
@@ -120,7 +120,7 @@ conformallab++ is a port of Stefan Sechelmann's Java ConformalLab (TU Berlin,
|
|||||||
~850 commits, v1.0.0 2018, LGPL). The port:
|
~850 commits, v1.0.0 2018, LGPL). The port:
|
||||||
|
|
||||||
- Replaces the custom Java halfedge structure (`CoHDS`) with `CGAL::Surface_mesh`
|
- Replaces the custom Java halfedge structure (`CoHDS`) with `CGAL::Surface_mesh`
|
||||||
- Replaces JUnit tests with GTest + CGAL test format (173 tests)
|
- Replaces JUnit tests with GTest + CGAL test format (176 tests)
|
||||||
- Adds Doxygen API documentation, CMake build, and CLI
|
- Adds Doxygen API documentation, CMake build, and CLI
|
||||||
- Is MIT licensed (the Java original is LGPL)
|
- Is MIT licensed (the Java original is LGPL)
|
||||||
- Targets submission to the CGAL library as package `Discrete_conformal_map`
|
- Targets submission to the CGAL library as package `Discrete_conformal_map`
|
||||||
|
|||||||
@@ -199,7 +199,7 @@ inner/outer edge lengths). Use `torus_8x8.off` for a finer approximation.
|
|||||||
## Summary checklist
|
## Summary checklist
|
||||||
|
|
||||||
```
|
```
|
||||||
[ ] Check 0: 170 tests pass, 1 skip
|
[ ] Check 0: 176 tests pass, 0 skipped
|
||||||
[ ] Check 1: Gauss–Bonnet exact (1e-10)
|
[ ] Check 1: Gauss–Bonnet exact (1e-10)
|
||||||
[ ] Check 2: FD gradient < 1e-6 for all 3 geometries
|
[ ] Check 2: FD gradient < 1e-6 for all 3 geometries
|
||||||
[ ] Check 3: Newton convergence < 50 iterations
|
[ ] Check 3: Newton convergence < 50 iterations
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ cmake --build build --target conformallab_cgal_tests
|
|||||||
ctest --test-dir build -R cgal --output-on-failure
|
ctest --test-dir build -R cgal --output-on-failure
|
||||||
```
|
```
|
||||||
|
|
||||||
All 173 tests pass (1 skipped by design — see `doc/api/tests.md`).
|
All 176 tests pass, 0 skipped (see `doc/api/tests.md`).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -260,7 +260,7 @@ im Phasen-Roadmap).
|
|||||||
|
|
||||||
Run these in order to validate the implementation:
|
Run these in order to validate the implementation:
|
||||||
|
|
||||||
- [ ] `ctest --test-dir build -R cgal --output-on-failure` → 173 tests pass, 1 skip
|
- [ ] `ctest --test-dir build -R cgal --output-on-failure` → 176 tests pass, 0 skipped
|
||||||
- [ ] `cgal.GaussBonnet.*` all pass → topology is correctly read from mesh
|
- [ ] `cgal.GaussBonnet.*` all pass → topology is correctly read from mesh
|
||||||
- [ ] `cgal.EuclideanFunctional.GradientCheck_*` pass → energy = integral of gradient
|
- [ ] `cgal.EuclideanFunctional.GradientCheck_*` pass → energy = integral of gradient
|
||||||
- [ ] `cgal.PeriodMatrix.TauInFundamentalDomain_*` pass → SL(2,ℤ) reduction correct
|
- [ ] `cgal.PeriodMatrix.TauInFundamentalDomain_*` pass → SL(2,ℤ) reduction correct
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
# bash scripts/try_it.sh
|
# bash scripts/try_it.sh
|
||||||
#
|
#
|
||||||
# Expected output (last lines):
|
# Expected output (last lines):
|
||||||
# [PASS] 174 CGAL tests pass, 2 skipped
|
# [PASS] 176 CGAL tests pass, 0 skipped
|
||||||
# [PASS] 36 non-CGAL tests pass
|
# [PASS] 36 non-CGAL tests pass
|
||||||
# [EXAMPLE] Converged in N iterations. ||G||_inf < 1e-9
|
# [EXAMPLE] Converged in N iterations. ||G||_inf < 1e-9
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user