the Compartmented Robust Posix C++ Unit Test system

FAIL

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.

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"  --------------------------------------------------------------
     /home/bjorn/devel/crpcut/doc-src/samples/fail.cpp:35
     assert_string called with 0
     -------------------------------------------------------------------------------
     ===============================================================================
     FAILED: fail_wrong_string
     phase="running"  --------------------------------------------------------------
     /home/bjorn/devel/crpcut/doc-src/samples/fail.cpp:39
     assert_string called with rope
     when the expected string was wire
     -------------------------------------------------------------------------------
     ===============================================================================
     Total 3 test cases selected
     UNTESTED : 0
     PASSED   : 1
     FAILED   : 2