<commit_before># Testing Wintermute {#testing}

Testing's an important part of Wintermute. It provides a level of insurance of
contract upholding between classes and higher-level interactions and allows for
rapid application development without too much concern for the breaking of
existing software. The test harness used by Wintermute is [CxxTest][] and
[CTest][] is used to drive the whole test suite (via `make test`). Coverage
support is handled by `gcov` and memory checking is handled by `valgrind`.

## Wintermute's Fixture Library {#testing-fixture-lib}

Wintermute has a fixture library `wintermute-fixtures` that
allows test developers to write more introspective actions into Wintermute and
even take advantage of mock classes into Wintermute's operations that are<commit_msg>[core] doc: Update TESTING info.<commit_after># Testing Wintermute {#testing}

Testing's an important part of Wintermute. It provides a level of insurance of
contract upholding between classes and higher-level interactions and allows for
rapid application development without too much concern for the breaking of
existing software. The test harness used by Wintermute is [CxxTest][] and
[CTest][] is used to drive the whole test suite (via `make test`). Coverage
support is handled by `gcov` and memory checking is handled by `valgrind`.

## Recommended Testing Targets

Thanks to `ctest`, testing can include coverage as well as memory leak
detection. After obtaining your sources and configuring the project for the
first time, you can set everything up for the first time by invoking

```
$ make Experimental
```

Of course, if you want to build a specific target, you can do so, but for
full project testing, this serves as a meta target to handle testing and the
other class of tests for the project.

## Wintermute's Fixture Library {#testing-fixture-lib}

Wintermute has a fixture library `wintermute-fixtures` that
allows test developers to write more introspective actions into Wintermute and
even take advantage of mock classes into Wintermute's operations that are
{'fraction_non_alphanumeric': 0.05089675230247213, 'fraction_numerical': 0.0, 'mean_word_length': 5.254545454545455, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5063445', 'n_tokens_mistral': 531, 'n_tokens_neox': 500, 'n_words': 295}