release: v0.9.0 — finalise PR #11 with CHANGELOG, version bump, stub cleanup
Some checks failed
C++ Tests / test-fast (pull_request) Successful in 2m25s
API Docs / doc-build (pull_request) Successful in 53s
C++ Tests / test-cgal (pull_request) Failing after 10m32s

Closes the v0.9.0 release loop on top of Phase 9a-Newton + Phase 8b-Lite:

* CHANGELOG.md (NEW) — Keep-A-Changelog format, with v0.9.0 entry
  detailing all Phase 9a / 9b / 8b-Lite contents and the doc-audit
  corrections that landed via PR #10.

* CITATION.cff — version 0.7.0 → 0.9.0, date 2026-05-18 → 2026-05-22.

* Stale HDS-port stubs removed (13 GTEST_SKIPs total):
  - code/tests/test_spherical_functional.cpp
  - code/tests/test_hyper_ideal_functional.cpp
  - code/tests/test_hyper_ideal_hyperelliptic_utility.cpp
  These referenced a "HDS port (Phase 4)" that never happened —
  CoHDS was intentionally replaced by CGAL::Surface_mesh, and the
  functional tests live in code/tests/cgal/test_*_functional.cpp.

* Test-count updates everywhere:
  - Non-CGAL  36 → 23  (drop = 13 deleted stubs)
  - CGAL      176 → 227
  - Total     212 → 250  (+38 net, 0 skipped)
  Files: README.md, CLAUDE.md, CHANGELOG.md, scripts/try_it.sh,
         doc/api/tests.md, doc/contributing.md, doc/getting-started.md,
         doc/math/validation.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Tarik Moussa
2026-05-22 04:25:59 +02:00
parent b26368924b
commit 540f71a629
13 changed files with 180 additions and 125 deletions

View File

@@ -1,5 +1,5 @@
add_executable(conformallab_tests
# ── Fully ported (pure math, no HDS) ────────────────────────────────────
# ── Pure-math test suite (no CGAL, no mesh — runs on every branch) ─────
test_clausen.cpp
test_hyper_ideal_utility.cpp
test_matrix_utility.cpp
@@ -7,12 +7,14 @@ add_executable(conformallab_tests
test_discrete_elliptic_utility.cpp
test_p2_utility.cpp
test_hyper_ideal_visualization_utility.cpp
# ── Stubs: blocked until HDS port (Phase 4) ──────────────────────────────
# All tests call GTEST_SKIP() with a clear explanation.
test_hyper_ideal_functional.cpp
test_hyper_ideal_hyperelliptic_utility.cpp
test_spherical_functional.cpp
#
# Stale stub files were removed in v0.9.0:
# test_hyper_ideal_functional.cpp
# test_hyper_ideal_hyperelliptic_utility.cpp
# test_spherical_functional.cpp
# They referenced a "HDS port (Phase 4)" that never happened —
# CoHDS was intentionally replaced by CGAL::Surface_mesh, and the
# functionals + tests live in code/tests/cgal/test_*_functional.cpp.
)
target_include_directories(conformallab_tests SYSTEM PRIVATE

View File

@@ -1,37 +0,0 @@
// Stub for de.varylab.discreteconformal.functional.HyperIdealFunctionalTest (Java/JUnit).
//
// STATUS: BLOCKED requires HDS port (Phase 4).
//
// These tests evaluate gradient and Hessian of the HyperIdealFunctional on
// actual mesh data (CoHDS + HyperIdealGenerator). They cannot be ported
// until the HalfEdge data structure (CoHDS), the functional evaluation
// framework, and the mesh generators are available in C++.
//
// Java tests and their status:
// testHessian() @Ignore in Java (skipped here too)
// testGradientWithHyperIdealAndIdealPoints blocked: needs HDS
// testGradientInTheExtendedDomain blocked: needs HDS
// testGradientWithHyperellipticCurve blocked: needs HDS
// testFunctionalAtNaNValue blocked: needs HDS
#include <gtest/gtest.h>
TEST(HyperIdealFunctionalTest, TestHessian_IgnoredInJava) {
GTEST_SKIP() << "@Ignore in Java skipped here too";
}
TEST(HyperIdealFunctionalTest, GradientWithHyperIdealAndIdealPoints) {
GTEST_SKIP() << "Blocked: requires HDS port (CoHDS + HyperIdealFunctional)";
}
TEST(HyperIdealFunctionalTest, GradientInTheExtendedDomain) {
GTEST_SKIP() << "Blocked: requires HDS port (CoHDS + HyperIdealFunctional)";
}
TEST(HyperIdealFunctionalTest, GradientWithHyperellipticCurve) {
GTEST_SKIP() << "Blocked: requires HDS port (CoHDS + HyperIdealFunctional)";
}
TEST(HyperIdealFunctionalTest, FunctionalAtNaNValue) {
GTEST_SKIP() << "Blocked: requires HDS port (CoHDS + HyperIdealFunctional)";
}

View File

@@ -1,26 +0,0 @@
// Stub for de.varylab.discreteconformal.functional.HyperIdealHyperellipticUtilityTest.
//
// STATUS: BLOCKED requires HDS port (Phase 4).
//
// Tests compute intersection angles of circles associated with hyper-ideal
// vertices using CoHDS + HalfEdgeUtils. All three tests operate on mesh
// data structures that are not yet available in C++.
//
// Java tests and their status:
// testCalculateCircleIntersections blocked: needs CoHDS + HalfEdgeUtils
// testCalculateCircleIntersectionsInfinite blocked: needs CoHDS + HalfEdgeUtils
// testLawsonHyperellipticAngles blocked: needs CoHDS + HyperIdealGenerator
#include <gtest/gtest.h>
TEST(HyperIdealHyperellipticUtilityTest, CalculateCircleIntersections) {
GTEST_SKIP() << "Blocked: requires HDS port (CoHDS + HalfEdgeUtils)";
}
TEST(HyperIdealHyperellipticUtilityTest, CalculateCircleIntersectionsInfinite) {
GTEST_SKIP() << "Blocked: requires HDS port (CoHDS + HalfEdgeUtils)";
}
TEST(HyperIdealHyperellipticUtilityTest, LawsonHyperellipticAngles) {
GTEST_SKIP() << "Blocked: requires HDS port (CoHDS + HyperIdealGenerator)";
}

View File

@@ -1,37 +0,0 @@
// Stub for de.varylab.discreteconformal.functional.SphericalFunctionalTest (Java/JUnit).
//
// STATUS: BLOCKED requires HDS port (Phase 4).
//
// Tests evaluate gradient and Hessian of the SphericalFunctional on meshes
// built via CoHDS + ConvexHull, and check that a regular spherical metric
// is a critical point of the functional. All tests require the HalfEdge
// data structure and the functional evaluation framework in C++.
//
// Java tests and their status:
// testReducedGradient blocked: needs CoHDS + SphericalFunctional
// testReducedHessian blocked: needs CoHDS + SphericalFunctional
// testGradient blocked: needs CoHDS + SphericalFunctional
// testHessian blocked: needs CoHDS + SphericalFunctional
// testCriticalPoint blocked: needs CoHDS + ConvexHull + SphericalFunctional
#include <gtest/gtest.h>
TEST(SphericalFunctionalTest, ReducedGradient) {
GTEST_SKIP() << "Blocked: requires HDS port (CoHDS + SphericalFunctional)";
}
TEST(SphericalFunctionalTest, ReducedHessian) {
GTEST_SKIP() << "Blocked: requires HDS port (CoHDS + SphericalFunctional)";
}
TEST(SphericalFunctionalTest, Gradient) {
GTEST_SKIP() << "Blocked: requires HDS port (CoHDS + SphericalFunctional)";
}
TEST(SphericalFunctionalTest, Hessian) {
GTEST_SKIP() << "Blocked: requires HDS port (CoHDS + SphericalFunctional)";
}
TEST(SphericalFunctionalTest, CriticalPoint) {
GTEST_SKIP() << "Blocked: requires HDS port (CoHDS + ConvexHull + SphericalFunctional)";
}