# Testing The default test suite is deterministic and has no elapsed-time assertions. Configure a build, compile it, and run the tests with CTest: ```sh 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: ```sh 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. A feasible solver run currently exposes the pre-existing defect tracked by issue #14; the test additions deliberately do not include its separate fix.