23 # include <vcl_msvc_warnings.h> 27 static int tests_passed;
28 static int tests_failed;
29 static const char* test_name;
37 std::cout <<
"-----------------------------------------------------------------------------\n" 39 if (test_name !=
nullptr) std::cout <<
' ' << test_name;
40 std::cout <<
":\n-----------------------------------------------------------------------------\n" << std::flush;
46 std::cout <<
" Test "<< std::setw(3) << std::right << std::setfill(
'0') << num_test
47 <<
": "<< std::setw(53) << std::left << std::setfill(
' ')<< msg <<
" --> " 59 std::cout <<
" PASSED\n" << std::flush;
62 std::cout <<
"**FAILED**\n" << std::flush;
68 std::cout <<
"-----------------------------------------------------------------------------\n";
69 if (test_name) std::cout << test_name <<
' ';
70 std::cout <<
"Test Summary: ";
73 if (tests_passed == 0)
74 std::cout <<
"No tests succeeded";
75 else if (tests_passed == 1)
76 std::cout <<
"1 test succeeded";
78 std::cout << tests_passed <<
" tests succeeded";
79 if (tests_failed == 1)
80 std::cout <<
", 1 test failed";
82 std::cout <<
", "<< tests_failed <<
" tests failed";
83 std::cout<<
"\t\t*****";
88 std::cout <<
"All "<< tests_passed <<
" tests succeeded";
89 else if (tests_passed == 1)
90 std::cout <<
"1 test succeeded";
92 std::cout <<
"Test succeeded";
94 std::cout <<
"\n-----------------------------------------------------------------------------\n" << std::flush;
100 std::cout << msg <<
" - " << std::flush;
106 std::cout << msg <<
" should be " << target <<
", is " << expr <<
", " << std::flush;
107 double diff = std::abs(expr - target);
108 if (target != 0.0 && diff != 0.0)
109 std::cout <<
"difference " << diff <<
", " << std::flush;
115 std::cout << msg <<
" should be " << target <<
", is " << expr <<
", " << std::flush;
116 double diff = std::abs(expr - target);
117 if (target != std::complex<double>(0,0) && diff != 0.0)
118 std::cout <<
"difference " << diff <<
", " << std::flush;
124 std::cout << msg <<
" should be " << target <<
", is " << expr <<
", " << std::flush;
125 double max = std::abs(target);
if (std::abs(expr) > max) max = std::abs(expr);
126 if (max==0.0 || target==0.0) max=1.0;
127 double diff = std::abs(expr - target) / max;
128 if (target != 0.0 && diff != 0.0)
129 std::cout <<
"relative difference " << diff <<
", " << std::flush;
135 std::cout << msg <<
" should be " << target <<
", is " << expr <<
", " << std::flush;
136 double max = std::abs(target);
if (std::abs(expr) > max) max = std::abs(expr);
137 if (max==0.0 || target==std::complex<double>(0,0)) max=1.0;
138 double diff = std::abs(expr - target) / max;
139 if (target != std::complex<double>(0,0) && diff != 0.0)
140 std::cout <<
"relative difference " << diff <<
", " << std::flush;
146 std::cout << msg <<
" should not be " << target <<
", is " << expr <<
", " << std::flush;
147 double diff = std::abs(expr - target);
148 if (target != 0.0 && diff != 0.0)
149 std::cout <<
"difference " << diff <<
", " << std::flush;
155 std::cout << msg <<
" should not be " << target <<
", is " << expr <<
", " << std::flush;
156 double diff = std::abs(expr - target);
157 if (target != std::complex<double>(0,0) && diff != 0.0)
158 std::cout <<
"difference " << diff <<
", " << std::flush;
164 std::cout << msg <<
" should be " << target <<
", is " << expr <<
", " << std::flush;
165 long diff = std::abs(expr - target);
166 if (target != 0 && diff != 0)
167 std::cout <<
"difference " << diff <<
", " << std::flush;
void testlib_test_start(const char *name)
initialise test counters, check test name 'name' exists.
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.
void testlib_test_perform(bool success)
increment success/failure counters.
void testlib_test_begin(const char *msg)
increment number of tests, then output msg.
int testlib_test_summary()
output summary of tests performed.
void testlib_test_assert_near_relative(const std::string &msg, double expr, double target, double tol)
output msg, then test to see if expr is within relative tol of target.
void testlib_test_assert_near(const std::string &msg, double expr, double target, double tol)
output msg, then perform test to see if expr is within tol of target.
void testlib_test_assert(const std::string &msg, bool expr)
output msg, then perform test in expr.
void testlib_test_assert_far(const std::string &msg, double expr, double target, double tol)
output msg, then perform test to see if expr is not within tol of target.