This is an advanced portable C++ library with 80 variations of the ASSERT macro, to add expressions, levels and optional actions. 48 are modular because they can also use Rich Boolies, allowing much more combinations than non-modular ASSERT macros. It is very flexible because it allows you to create custom loggers and assertion displayers, but you can also use the provided ones for Windows, wxWidgets or console applications. The loggers and displayers show extra information, like the date and time, the thread id, the current working directory, etc. and you can add infoprovider objects to ModAssy, to provide similar custom information.
It has eight basic assertions, that each have 16 variations, by adding four suffixes that add functionality.
It is very reliable and portable, as it has been tested with five different compilers (VC++ 6.0, .NET 2003, .NET 2005, gcc on Windows and Linux), with nearly all warnings enabled.
The Rich Boolies can do all kinds of checks and generate elaborate information:
* Relations between two objects: rbEQUAL, rbLESS, ...
* Bitwise comparisons: rbEQUAL_BITWISE, rbBITS_ON, rbBITS_OFF, ...
* Type checking (with RTTI): rbEQUAL_TYPES, rbHAS_TYPE, ...
* Working on ranges and containers: rbIN_RANGE, rbIN_RANGES, rbIN_CONTAINER, rbIN_CONTAINERS, ... These have an extra argument that tells what kind of check to do, e.g. Sorted, Compare, Has, Unique, ...
* String comparisons: rbSTRING, rbSTRING_BEGINS_WITH, rbSTRING_ENDS_WITH, rbSTRING_CONTAINS. These have an extra argument that tells what kind of check to do, e.g. case sensitive or not.
* Logical expressions: rbAND, rbOR, rbXOR. These can have Rich Boolies or plain boolean expressions as their arguments.
* Exceptions: rbEXCEPTION takes an exception as its argument, and uses the information in it.
» version 1.5.1 - posted on 2006-10-15