Files
partridge-cpp/TESTING.md
T
Codex instance 912d59fdd9 test: cover rendering a valid solution
Exercise Results::output() with the known order-8 fixture so Debug builds compile and run the rendering assertions. Check the output dimensions and ensure the valid tiling leaves no unrendered cells.

The test passes in Release and currently fails to compile in Debug because Results::set() refers to the nonexistent grid_ member.

Refs: #7
2026-07-30 16:43:29 +01:00

1.7 KiB

Testing

The default test suite is deterministic and has no elapsed-time assertions. Configure a build, compile it, and run the tests with CTest:

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
ctest --test-dir build --output-on-failure

The tests independently check board dimensions, square multiplicities, bounds, overlap, and complete coverage. They cover small unsatisfiable solver inputs, a known order-8 solution, invalid placement diagnostics, and construction of an order-9 solution from the order-8 fixture. The rendering test also formats the known order-8 solution and checks the resulting grid dimensions and coverage.

Debug and sanitizers

Use a separate build directory for each configuration:

cmake -S . -B build-debug -DCMAKE_BUILD_TYPE=Debug
cmake --build build-debug
ctest --test-dir build-debug --output-on-failure

cmake -S . -B build-asan -DCMAKE_BUILD_TYPE=RelWithDebInfo \
  -DCMAKE_CXX_FLAGS="-fsanitize=address -fno-omit-frame-pointer" \
  -DCMAKE_EXE_LINKER_FLAGS="-fsanitize=address"
cmake --build build-asan
ctest --test-dir build-asan --output-on-failure

cmake -S . -B build-ubsan -DCMAKE_BUILD_TYPE=RelWithDebInfo \
  -DCMAKE_CXX_FLAGS="-fsanitize=undefined -fno-omit-frame-pointer" \
  -DCMAKE_EXE_LINKER_FLAGS="-fsanitize=undefined"
cmake --build build-ubsan
ctest --test-dir build-ubsan --output-on-failure

The sanitizer flags shown are supported by Clang and GCC. Other compilers may require different flags. Debug compilation and a feasible solver run currently expose the pre-existing defects tracked by issues #7 and #14 respectively; the test additions deliberately do not include fixes for those separate issues.