Introduction Philosophy Features Setup Prerequisites Building from source Installing the library and language files (Linux, macOS, FreeBSD) Usage Getting started Adding tests Asserting things Configuring tests Setting up suite-wise configuration Assertion reference Assertion API Assertion Criteria Tags Report Hooks Testing Phases Hook Parameters Logging messages Environment and CLI Command line arguments Shell Wildcard Pattern Environment Variables Writing tests reports in a custom format Adding a custom output provider Writing to a file with an output provider Using parameterized tests Adding parameterized tests Passing multiple parameters Configuring parameterized tests Using theories Adding theories Assertions and invariants Configuring theories Full sample & purpose of theories What’s the difference between theories and parameterized tests ? Changing the internals Providing your own main Implementing your own logger Debugging and Coverage information Debugging with GDB Debugging on macOS Debugging with an unsupported debugger Coverage of Criterion tests Using Valgrind with Criterion F.A.Q