| the Compartmented Robust Posix C++ Unit Test system |
|
|---|
Immediately terminate a test with an customized error report.
The macro FAIL is used as an output stream
object.
Used in: A test function body, the constructor or destructor of a
fixture, or a function called from
them.
See TEST(name, ...).
To fail a test with a customized error report, use the
FAIL macro as any output stream. All information
desired in the error report must fit in one single statement.
If the data to be printed has an output stream operator, it will be used for the formatting, otherwise a hex-dump of the object memory will be shown.
![]() | Note |
|---|---|
Since FAIL uses a templated
operator<<, it only works with
types defined in global/namespace scope. |
Example: The test program
#include <crpcut.hpp>
#include <cstring>
const char *expected_string = 0;
void assert_string(const char *p)
{
if (!p) FAIL << "assert_string called with 0";
if (!expected_string) return;
if (std::strcmp(p, expected_string) != 0)
{
FAIL << "assert_string called with " << p
<< "\nwhen the expected string was " << expected_string;
}
}
TEST(fail_null)
{
assert_string(0);
}
TEST(pass_no_expect)
{
assert_string("rope");
}
TEST(fail_wrong_string)
{
expected_string = "wire";
assert_string("rope");
}
int main(int argc, char *argv[])
{
return crpcut::run(argc, argv);
}
provides two detailed failure reports:
FAILED!: fail_null
phase="running" --------------------------------------------------------------
samples/fail.cpp:35
assert_string called with 0
-------------------------------------------------------------------------------
===============================================================================
FAILED!: fail_wrong_string
phase="running" --------------------------------------------------------------
samples/fail.cpp:39
assert_string called with rope
when the expected string was wire
-------------------------------------------------------------------------------
===============================================================================
3 test cases selected
Sum Critical Non-critical
PASSED : 1 1 0
FAILED : 2 2 0