2 #ifndef testlib_test_h_ 3 #define testlib_test_h_ 31 double target = 0,
double tol = 1e-12);
34 std::complex<double> target,
double tol = 1e-12);
37 double target = 0,
double tol = 1e-12);
40 std::complex<double> expr,
41 std::complex<double> target,
45 double target = 0,
double tol = 1e-12);
48 std::complex<double> target,
double tol = 1e-12);
52 #define Assert testlib_test_assert 53 #define AssertNear testlib_test_assert_near 54 #define AssertFar testlib_test_assert_far 57 #define START(s) testlib_test_start(s) 62 testlib_test_begin(s); \ 63 testlib_test_perform((p)==(v)); \ 67 #define TEST_EQUAL(s,p,v) \ 69 testlib_test_begin(s); \ 70 testlib_test_assert_equal("",p,v); \ 74 #define TEST_NEAR(s,p,v,t) \ 76 testlib_test_begin(s); \ 77 testlib_test_assert_near("",p,v,t); \ 81 #define TEST_NEAR_REL(s,p,v,t) \ 83 testlib_test_begin(s); \ 84 testlib_test_assert_near_relative("",p,v,t); \ 88 #define TEST_FAR(s,p,v,t) \ 90 testlib_test_begin(s); \ 91 testlib_test_assert_far("",p,v,t); \ 95 #define TEST_RUN(s,x,p,v) \ 97 testlib_test_begin(s); \ 99 testlib_test_perform((p)==(v)); \ 103 #define SUMMARY() return testlib_test_summary() 106 #define RUN_TEST_FUNC(x) \ 107 testlib_test_start(#x); x(); return testlib_test_summary() 110 #define MAIN( testname ) \ 111 int testname ## _main(int,char*[]) 114 #define MAIN_ARGS( testname ) \ 115 int testname ## _main(int argc, char* argv[]) 119 #define TESTMAIN( testname ) \ 120 int testname ## _main(int,char*[]) { START(#testname); testname(); SUMMARY(); } 124 #define TEST_MAIN( testname ) \ 125 int testname(int,char*[]) { START(#testname); testname(); SUMMARY(); } 128 #define TESTMAIN_ARGS( testname ) \ 129 int testname ## _main(int argc, char*argv[]) { START(#testname); testname(argc,argv); SUMMARY(); } 133 #define TEST_MAIN_ARGS( testname ) \ 134 int testname(int argc, char*argv[]) { START(#testname); testname(argc,argv); SUMMARY(); } 137 #undef TESTLIB_DEFINE_MAIN 138 #define TESTLIB_DEFINE_MAIN(testname) \ 139 int main() { START(#testname); testname(); return testlib_test_summary(); } 142 #undef TESTLIB_DEFINE_MAIN_ARGS 143 #define TESTLIB_DEFINE_MAIN_ARGS(testname) \ 144 int main(int argc, char * argv[]) { START(#testname); testname(argc,argv); SUMMARY(); } 146 #endif // testlib_test_h_ void testlib_test_begin(const char *msg)
increment number of tests, then output msg.
void testlib_test_start(const char *name=nullptr)
initialise test counters, check test name 'name' exists.
void testlib_test_assert(const std::string &msg, bool expr)
output msg, then perform test in expr.
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.
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.
int testlib_test_summary()
output summary of tests performed.
void testlib_test_perform(bool success)
increment success/failure counters.
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.
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.