Commit Graph

6 Commits

Author SHA1 Message Date
Laurent Rineau 0a6eecd28d explain why NDEBUG must not be defined 2025-11-20 09:52:12 +01:00
Laurent Rineau 5318889e37 fixes after Andreas's second review 2025-11-12 16:59:38 +01:00
Laurent Rineau 5bd39bf250 address Andreas' review, except for STL_Extension vs Profiling_tools 2025-11-12 15:05:20 +01:00
Laurent Rineau c89c212a54 bisect_failures: fix documentation 2025-10-31 22:24:41 +01:00
Laurent Rineau 04cb44bea1 fix license: LGPL 2025-10-31 15:43:57 +01:00
Laurent Rineau 669c7c8599 STL_Extension: Add bisect_failures debugging utility
Add new bisect_failures template function to help identify minimal failing
test cases from complex input data. The utility uses a bisection-like approach
to iteratively simplify data and locate the smallest subset that causes failures.

Features:
- Handles multiple failure types: CGAL exceptions, std::exceptions, exit codes
- Automatic ratio adjustment (starts at 0.5, halves when no fault found)
- Saves intermediate states for debugging (current, bad, error, final_bad)
- Comprehensive test suite with 14 tests covering all combinations:
  * Edge cases (empty data, no failures)
  * Single element failures (each failure type independently)
  * Pair combinations (all 2-element permutations)
  * Triple combinations (all 3 failure types together)
  * Large datasets (up to 200 elements)

The test suite demonstrates complete combinatorial coverage of three
independent failure conditions and validates the algorithm's ability to
isolate minimal failing cases.

All tests pass in both Debug and Release configurations.
2025-10-31 15:32:42 +01:00