the Compartmented Robust Posix C++ Unit Test system

crpcut::libs

Namespace for library name access functions used by CRPCUT_WRAP_FUNC(lib, func, rv, param_list, param_call) and CRPCUT_WRAP_V_FUNC(lib, func, rv, param_list, param_call).

crpcut already defines library name access functions for libc and librt. To write a wrapper for a function defined in another library requires a library name access function for it. A library name access function has the signature:

const char * const *libname()

The array returned must be zero-terminated.

Example: The test program wrapping a function in libm

     
     #include <crpcut.hpp>
     #include <math.h>
     
     namespace crpcut {
       namespace libs {
         const char * const * libm()
         {
           static const char * const name[] = {
             "libm.so",
             "libm.so.6",
             0
           };
           return name;
         }
       }
     }
     namespace original {
       CRPCUT_WRAP_FUNC(libm, asin, double, (double d), (d))
     }
     
     extern "C"
     {
       double asin(double d) throw ()
       {
         ASSERT_GE(d, -1.0);
         ASSERT_LT(d,  1.0);
         return original::asin(d);
       }
     }
     
     TEST(pass_in_range)
     {
       double d = asin(0.5);
       INFO << "d=" << d;
     }
     
     TEST(fail_assert_lt)
     {
       double d = asin(1.1);
       INFO << "d=" << d;
     }
     
     int main(int argc, char *argv[])
     {
       return crpcut::run(argc, argv);
     }

      

fails one test:


     FAILED!: fail_assert_lt
     phase="running"  --------------------------------------------------------------
     samples/wrapped.cpp:53
     ASSERT_LT(d, 1.0)
       where d = 1.1
             1.0 = 1
     -------------------------------------------------------------------------------
     ===============================================================================
     2 test cases selected
     
                    Sum   Critical   Non-critical
     PASSED   :       1          1              0
     FAILED   :       1          1              0