First cut of "what is it" page

Updated Home (markdown)
philsquared
2010-11-09 06:47:19 -08:00
parent 70099c7fb4
commit c985aec755

26
Home.md

@ -1 +1,25 @@
Welcome to the Catch wiki!
# What is CATCH?
CATCH stands for C++ Adaptive Test Cases in Headers and is a multi-paradigm unit test framework for C, C++ and Objective-C (but primarily implemented in C++) - coded entirely in headers.
## Why do we need yet another C++ Unit Test System?
Good question. In fact the working title for CATCH was YACUTS (Yet Another C++ Unit Test System) - followed, briefly, by NINJA CUTS ( NINJA CUTS Is Not Just Another C++ Unit Test System).
There are a number of decent C++ unit testing frameworks out there, including (but by no means limited to), CppUnit, Aeryn, Cute, Fructose and many more. So what does CATCH bring to the party that differentiates it from these? Apart from a Catchy name, of course.
Here's a list of core features of Catch that together are, to my knowledge, not found anywhere else.
* Implemented entirely in headers. Just #include "catch.hpp" and you're away.
* Write test cases as functions or methods. Functions are self registering.
* No context to pass around. Call through non test code and back into test code and assertions still work.
* Only one core assertion macro. Comparisons are with standard C/C++ operators - yet the full expression is decomposed and logged.
* Tests are named hierarchically and suites of tests can be implied by at any level of the hierarchy.
* Test cases can also be tagged and non hierarchical suites can be created from tags.
* Test case function names are generated - you only need to provide a test name (and description)
* Floating point tolerance comparisons are built in using an expressive Approx() syntax.
* Test cases can be described from a TDD or BDD mindset, with support for nested SECTIONs in the latter.
* Output is through reporter objects. basic textual and XML reporters are included. Custom reporters can be easily added.
* Output can be to any stream.
* A default main() function is provided (in a header), but you can supply your own for complete control (e.g. integration into your own test runner GUI).
* A command line parser is provided and can still be used if you choose to provided your own main() function.