Macros | Functions
testlib_test.h File Reference

Testing software. More...

#include <string>
#include <complex>

Go to the source code of this file.

Macros

#define Assert   testlib_test_assert
 
#define AssertNear   testlib_test_assert_near
 
#define AssertFar   testlib_test_assert_far
 
#define START(s)   testlib_test_start(s)
 initialise test. More...
 
#define TEST(s, p, v)
 TEST function, s is message, test to see if p==v. More...
 
#define TEST_EQUAL(s, p, v)
 TEST function, s is message, test to see if p==v for integral values. More...
 
#define TEST_NEAR(s, p, v, t)
 TEST function, s is message, test to see if p is close to v, tolerance t. More...
 
#define TEST_NEAR_REL(s, p, v, t)
 TEST function, message s, test to see if (p-v)/p is small compared to t. More...
 
#define TEST_FAR(s, p, v, t)
 TEST function, s is message, test to see if p is far from v, tolerance t. More...
 
#define TEST_RUN(s, x, p, v)
 run x, s is message, then test to see if p==v. More...
 
#define SUMMARY()   return testlib_test_summary()
 Summarise test. More...
 
#define RUN_TEST_FUNC(x)   testlib_test_start(#x); x(); return testlib_test_summary()
 Run a singleton test function. More...
 
#define MAIN(testname)   int testname ## _main(int,char*[])
 Declare the main function. More...
 
#define MAIN_ARGS(testname)   int testname ## _main(int argc, char* argv[])
 Declare the main function with parameter passing. More...
 
#define TESTMAIN(testname)   int testname ## _main(int,char*[]) { START(#testname); testname(); SUMMARY(); }
 A simplified version of the main test, just in one line. More...
 
#define TEST_MAIN(testname)   int testname(int,char*[]) { START(#testname); testname(); SUMMARY(); }
 A simplified version of the main test, just in one line. More...
 
#define TESTMAIN_ARGS(testname)   int testname ## _main(int argc, char*argv[]) { START(#testname); testname(argc,argv); SUMMARY(); }
 A simplified version of the main test, with parameter passing. More...
 
#define TEST_MAIN_ARGS(testname)   int testname(int argc, char*argv[]) { START(#testname); testname(argc,argv); SUMMARY(); }
 A simplified version of the main test, with parameter passing. More...
 
#define TESTLIB_DEFINE_MAIN(testname)   int main() { START(#testname); testname(); return testlib_test_summary(); }
 Another simplified main test. To be used in a standalone executable. More...
 
#define TESTLIB_DEFINE_MAIN_ARGS(testname)   int main(int argc, char * argv[]) { START(#testname); testname(argc,argv); SUMMARY(); }
 A simplified main test with parameter passing. To be used in a standalone executable. More...
 

Functions

void testlib_test_start (const char *name=nullptr)
 initialise test counters, check test name 'name' exists. More...
 
void testlib_test_begin (const char *msg)
 increment number of tests, then output msg. More...
 
void testlib_test_perform (bool success)
 increment success/failure counters. More...
 
int testlib_test_summary ()
 output summary of tests performed. More...
 
void testlib_test_assert (const std::string &msg, bool expr)
 output msg, then perform test in expr. More...
 
void testlib_test_assert_near (const std::string &msg, double expr, double target=0, double tol=1e-12)
 output msg, then perform test to see if expr is within tol of target. More...
 
void testlib_test_assert_near (const std::string &msg, std::complex< double > expr, std::complex< double > target, double tol=1e-12)
 output msg, then perform test to see if expr is within tol of target. More...
 
void testlib_test_assert_near_relative (const std::string &msg, double expr, double target=0, double tol=1e-12)
 output msg, then test to see if expr is within relative tol of target. More...
 
void testlib_test_assert_near_relative (const std::string &msg, std::complex< double > expr, std::complex< double > target, double tol=1e-12)
 output msg, then test to see if expr is within relative tol of target. More...
 
void testlib_test_assert_far (const std::string &msg, double expr, double target=0, double tol=1e-12)
 output msg, then perform test to see if expr is not within tol of target. More...
 
void testlib_test_assert_far (const std::string &msg, std::complex< double > expr, std::complex< double > target, double tol=1e-12)
 output msg, then perform test to see if expr is not within tol of target. More...
 
void testlib_test_assert_equal (const std::string &msg, long expr, long target)
 output msg, then perform test to see if expr is equal to target. More...
 

Detailed Description

Testing software.

Author
Tim Cootes
  Modifications
   Apr 2002, Amitha Perera: Copied from vil_test and moved into testlib in an
                  attempt to consolidate all the repeated test functionality.
   Sep.2004, Peter Vanroose: added testlib_test_assert_near_relative().

Definition in file testlib_test.h.

Macro Definition Documentation

◆ Assert

#define Assert   testlib_test_assert

Definition at line 52 of file testlib_test.h.

◆ AssertFar

#define AssertFar   testlib_test_assert_far

Definition at line 54 of file testlib_test.h.

◆ AssertNear

#define AssertNear   testlib_test_assert_near

Definition at line 53 of file testlib_test.h.

◆ MAIN

#define MAIN (   testname)    int testname ## _main(int,char*[])

Declare the main function.

Definition at line 110 of file testlib_test.h.

◆ MAIN_ARGS

#define MAIN_ARGS (   testname)    int testname ## _main(int argc, char* argv[])

Declare the main function with parameter passing.

Definition at line 114 of file testlib_test.h.

◆ RUN_TEST_FUNC

#define RUN_TEST_FUNC (   x)    testlib_test_start(#x); x(); return testlib_test_summary()

Run a singleton test function.

Definition at line 106 of file testlib_test.h.

◆ START

#define START (   s)    testlib_test_start(s)

initialise test.

Definition at line 57 of file testlib_test.h.

◆ SUMMARY

#define SUMMARY ( )    return testlib_test_summary()

Summarise test.

Definition at line 103 of file testlib_test.h.

◆ TEST

#define TEST (   s,
  p,
 
)
Value:
do { \
testlib_test_begin(s); \
testlib_test_perform((p)==(v)); \
} while (false)

TEST function, s is message, test to see if p==v.

Definition at line 60 of file testlib_test.h.

◆ TEST_EQUAL

#define TEST_EQUAL (   s,
  p,
 
)
Value:
do { \
testlib_test_begin(s); \
testlib_test_assert_equal("",p,v); \
} while (false)

TEST function, s is message, test to see if p==v for integral values.

Definition at line 67 of file testlib_test.h.

◆ TEST_FAR

#define TEST_FAR (   s,
  p,
  v,
 
)
Value:
do { \
testlib_test_begin(s); \
testlib_test_assert_far("",p,v,t); \
} while (false)

TEST function, s is message, test to see if p is far from v, tolerance t.

Definition at line 88 of file testlib_test.h.

◆ TEST_MAIN

#define TEST_MAIN (   testname)    int testname(int,char*[]) { START(#testname); testname(); SUMMARY(); }

A simplified version of the main test, just in one line.

This (new) variant is to be used with the (new) CMake GENERATE_TEST_DRIVER()

Definition at line 124 of file testlib_test.h.

◆ TEST_MAIN_ARGS

#define TEST_MAIN_ARGS (   testname)    int testname(int argc, char*argv[]) { START(#testname); testname(argc,argv); SUMMARY(); }

A simplified version of the main test, with parameter passing.

This (new) variant is to be used with the (new) CMake GENERATE_TEST_DRIVER()

Definition at line 133 of file testlib_test.h.

◆ TEST_NEAR

#define TEST_NEAR (   s,
  p,
  v,
 
)
Value:
do { \
testlib_test_begin(s); \
testlib_test_assert_near("",p,v,t); \
} while (false)

TEST function, s is message, test to see if p is close to v, tolerance t.

Definition at line 74 of file testlib_test.h.

◆ TEST_NEAR_REL

#define TEST_NEAR_REL (   s,
  p,
  v,
 
)
Value:
do { \
testlib_test_begin(s); \
testlib_test_assert_near_relative("",p,v,t); \
} while (false)

TEST function, message s, test to see if (p-v)/p is small compared to t.

Definition at line 81 of file testlib_test.h.

◆ TEST_RUN

#define TEST_RUN (   s,
  x,
  p,
 
)
Value:
do { \
testlib_test_begin(s); \
x; \
testlib_test_perform((p)==(v)); \
} while (false)

run x, s is message, then test to see if p==v.

Definition at line 95 of file testlib_test.h.

◆ TESTLIB_DEFINE_MAIN

#define TESTLIB_DEFINE_MAIN (   testname)    int main() { START(#testname); testname(); return testlib_test_summary(); }

Another simplified main test. To be used in a standalone executable.

Definition at line 138 of file testlib_test.h.

◆ TESTLIB_DEFINE_MAIN_ARGS

#define TESTLIB_DEFINE_MAIN_ARGS (   testname)    int main(int argc, char * argv[]) { START(#testname); testname(argc,argv); SUMMARY(); }

A simplified main test with parameter passing. To be used in a standalone executable.

Definition at line 143 of file testlib_test.h.

◆ TESTMAIN

#define TESTMAIN (   testname)    int testname ## _main(int,char*[]) { START(#testname); testname(); SUMMARY(); }

A simplified version of the main test, just in one line.

Avoids compiler warnings about "unused argc and argv".

Definition at line 119 of file testlib_test.h.

◆ TESTMAIN_ARGS

#define TESTMAIN_ARGS (   testname)    int testname ## _main(int argc, char*argv[]) { START(#testname); testname(argc,argv); SUMMARY(); }

A simplified version of the main test, with parameter passing.

Definition at line 128 of file testlib_test.h.

Function Documentation

◆ testlib_test_assert()

void testlib_test_assert ( const std::string &  msg,
bool  expr 
)

output msg, then perform test in expr.

Definition at line 98 of file testlib_test.cxx.

◆ testlib_test_assert_equal()

void testlib_test_assert_equal ( const std::string &  msg,
long  expr,
long  target 
)

output msg, then perform test to see if expr is equal to target.

Definition at line 162 of file testlib_test.cxx.

◆ testlib_test_assert_far() [1/2]

void testlib_test_assert_far ( const std::string &  msg,
double  expr,
double  target = 0,
double  tol = 1e-12 
)

output msg, then perform test to see if expr is not within tol of target.

Definition at line 144 of file testlib_test.cxx.

◆ testlib_test_assert_far() [2/2]

void testlib_test_assert_far ( const std::string &  msg,
std::complex< double >  expr,
std::complex< double >  target,
double  tol = 1e-12 
)

output msg, then perform test to see if expr is not within tol of target.

Definition at line 153 of file testlib_test.cxx.

◆ testlib_test_assert_near() [1/2]

void testlib_test_assert_near ( const std::string &  msg,
double  expr,
double  target = 0,
double  tol = 1e-12 
)

output msg, then perform test to see if expr is within tol of target.

Definition at line 104 of file testlib_test.cxx.

◆ testlib_test_assert_near() [2/2]

void testlib_test_assert_near ( const std::string &  msg,
std::complex< double >  expr,
std::complex< double >  target,
double  tol = 1e-12 
)

output msg, then perform test to see if expr is within tol of target.

Definition at line 113 of file testlib_test.cxx.

◆ testlib_test_assert_near_relative() [1/2]

void testlib_test_assert_near_relative ( const std::string &  msg,
double  expr,
double  target = 0,
double  tol = 1e-12 
)

output msg, then test to see if expr is within relative tol of target.

Definition at line 122 of file testlib_test.cxx.

◆ testlib_test_assert_near_relative() [2/2]

void testlib_test_assert_near_relative ( const std::string &  msg,
std::complex< double >  expr,
std::complex< double >  target,
double  tol = 1e-12 
)

output msg, then test to see if expr is within relative tol of target.

Definition at line 133 of file testlib_test.cxx.

◆ testlib_test_begin()

void testlib_test_begin ( const char *  msg)

increment number of tests, then output msg.

Definition at line 43 of file testlib_test.cxx.

◆ testlib_test_perform()

void testlib_test_perform ( bool  success)

increment success/failure counters.

Definition at line 55 of file testlib_test.cxx.

◆ testlib_test_start()

void testlib_test_start ( const char *  name = nullptr)

initialise test counters, check test name 'name' exists.

Definition at line 31 of file testlib_test.cxx.

◆ testlib_test_summary()

int testlib_test_summary ( )

output summary of tests performed.

Definition at line 66 of file testlib_test.cxx.