29 static std::string
red;
49 setupterm (NULL, 1, NULL);
50 const char *setcolor = tigetstr (
"setaf");
51 green = setcolor ? tiparm (setcolor, 2) :
"";
52 red = setcolor ? tiparm (setcolor, 1) :
"";
53 yellow = setcolor ? tiparm (setcolor, 3) :
"";
54 const char *temp = tigetstr (
"sgr0");
56 temp = tigetstr (
"bold");
57 bold = temp ? temp :
"";
59 std::cerr <<
"Not compiled with ncurses; colors not available\n";
66 std::cerr <<
"==============================================\n"
69 <<
"----------------------------------------------\n\n";
74 std::cerr << std::endl <<
"Test group " <<
name << std::endl <<
tests <<
" tests run: ";
91 std::cerr << std::endl << std::endl;
99 std::cerr << std::endl <<
"=== Testing " <<
name <<
" / " <<
subtest_name <<
" ===" << std::endl;
104 void skip (
const std::string &reason) {
108 std::cout <<
yellow <<
"skip: " <<
normal << reason << std::endl;
117 std::cout <<
yellow <<
"warning: " <<
normal << reason << std::endl;
126 std::cout <<
green <<
"ok: " <<
normal << success << std::endl;
133 bool fail (
const std::string &failure,
const std::string &detail =
"") {
139 std::cout << failure << (detail.empty() ?
"" :
": ") << detail << std::endl;
143 bool result (
bool result,
const std::string &test,
const std::string &detail =
"") {
147 return fail (test, detail);
151 template <
typename T>
152 bool equal (
const std::string &test_name,
const T &expect,
const T &actual) {
153 if (
result (expect == actual, test_name,
"mismatch:")) {
156 std::cout <<
"mismatch- expect: '" << expect <<
'\'' << std::endl;
157 std::cout <<
" actual: '" << actual <<
'\'' << std::endl;
161 bool equal (
const std::string &test_name,
const char *expect,
const char *actual) {
162 return equal (test_name, std::string{expect}, std::string{actual});
165 bool equal (
const std::string &test_name,
const char *expect,
const std::string &actual) {
166 return equal (test_name, std::string{expect}, actual);
169 bool equal (
const std::string &test_name,
long expect,
const long actual) {
170 return equal<long> (test_name, expect, actual);
173 bool isTrue (
const std::string &test_name,
bool actual) {
174 return equal (test_name,
"true", actual ?
"true" :
"false");
177 bool isFalse (
const std::string &test_name,
bool actual) {
178 return equal (test_name,
"false", actual ?
"true" :
"false");
181 bool signEqual (
const std::string &test_name,
long expect,
long actual) {
182 return equal (test_name, expect < 0 ? -1 : expect > 0 ? 1 : 0, actual < 0 ? -1 : actual > 0 ? 1 : 0);
188 template <
typename T>
189 bool equal (
const T &expect,
const T &actual) {
190 if (expect == actual) {
191 std::stringstream
name;
196 std::cout <<
"mismatch- expect: '" << expect <<
'\'' << std::endl;
197 std::cout <<
" actual: '" << actual <<
'\'' << std::endl;
201 bool equal (
const char *expect,
const char *actual) {
202 return equal (std::string{expect}, std::string{actual});
205 bool equal (
const char *expect,
const std::string &actual) {
206 return equal (std::string{expect}, actual);
209 bool equal (
long expect,
const long actual) {
210 return equal<long> (expect, actual);
214 return equal (
"true", actual ?
"true" :
"false");
218 return equal (
"false", actual ?
"true" :
"false");
225 const std::exception &expect,
226 const std::exception &actual,
227 bool compare_text =
false) {
228 if (
typeid (expect) ==
typeid (actual)) {
229 if (compare_text && (strcmp (expect.what(), actual.what()) != 0)) {
230 fail (
"Wrong exception text", trigger);
231 std::cerr <<
"mismatch- expect: " << expect.what() << std::endl;
232 std::cerr <<
" actual: " << actual.what() << std::endl;
235 succeed (trigger +
": " + expect.what());
238 fail (
"Wrong exception", trigger);
239 std::cerr <<
"mismatch- expect: " <<
typeid (expect).
name() << std::endl;
240 std::cerr <<
" actual: " <<
typeid (actual).
name() << std::endl;
245 const std::exception &expect,
246 const std::exception &actual) {
259 std::ostringstream sum;
261 std::cerr <<
"All tests passed!" << std::endl << std::endl;
264 std::cerr <<
"Some tests FAILED!" <<
normal << std::endl << std::endl;
Definition: failurecounter.h:21
static std::string normal
Definition: failurecounter.h:32
void warning(const std::string &reason)
Record that a test generated a warning.
Definition: failurecounter.h:113
static std::string yellow
Definition: failurecounter.h:30
FailureCounter(const std::string &n)
Start a new group of tests.
Definition: failurecounter.h:65
bool equal(const std::string &test_name, const T &expect, const T &actual)
Definition: failurecounter.h:152
std::string subtest_name
Definition: failurecounter.h:34
bool isFalse(const std::string &test_name, bool actual)
Definition: failurecounter.h:177
int check_number
Definition: failurecounter.h:40
bool sameExceptionAndText(const std::string &trigger, const std::exception &expect, const std::exception &actual)
Definition: failurecounter.h:244
void subtest(const std::string &n)
Provide a name for a group of subtests.
Definition: failurecounter.h:96
int errorCount()
Definition: failurecounter.h:250
static int grand_total_skips
Definition: failurecounter.h:27
static int grand_total_passes
Definition: failurecounter.h:24
bool fail(const std::string &failure, const std::string &detail="")
Record and report a failed test.
Definition: failurecounter.h:133
int passes
Definition: failurecounter.h:36
bool equal(const T &expect, const T &actual)
Definition: failurecounter.h:189
bool equal(long expect, const long actual)
Definition: failurecounter.h:209
bool succeed(const std::string &success)
Record and report a successful test.
Definition: failurecounter.h:122
~FailureCounter()
On destruction, report summary of test results.
Definition: failurecounter.h:73
int warnings
Definition: failurecounter.h:38
bool isTrue(const std::string &test_name, bool actual)
Definition: failurecounter.h:173
static std::string red
Definition: failurecounter.h:29
static std::string green
Definition: failurecounter.h:28
bool equal(const std::string &test_name, const char *expect, const std::string &actual)
Definition: failurecounter.h:165
static std::string bold
Definition: failurecounter.h:31
bool result(bool result, const std::string &test, const std::string &detail="")
Definition: failurecounter.h:143
std::string name
Definition: failurecounter.h:33
bool sameException(const std::string &trigger, const std::exception &expect, const std::exception &actual, bool compare_text=false)
Definition: failurecounter.h:224
bool equal(const std::string &test_name, long expect, const long actual)
Definition: failurecounter.h:169
static int grandTotalErrors()
Definition: failurecounter.h:254
bool signEqual(const std::string &test_name, long expect, long actual)
Definition: failurecounter.h:181
static void initialize_colors()
If ncurses is available, initializes terminal color escape sequences.
Definition: failurecounter.h:47
bool equal(const std::string &test_name, const char *expect, const char *actual)
Definition: failurecounter.h:161
bool equal(const char *expect, const char *actual)
Definition: failurecounter.h:201
int skips
Definition: failurecounter.h:39
bool isFalse(bool actual)
Definition: failurecounter.h:217
static int grand_total_errors
Definition: failurecounter.h:25
static void summary()
Definition: failurecounter.h:258
int errors
Definition: failurecounter.h:37
int tests
Definition: failurecounter.h:35
bool equal(const char *expect, const std::string &actual)
Definition: failurecounter.h:205
static int grand_total_warnings
Definition: failurecounter.h:26
void skip(const std::string &reason)
Record that a test was skipped.
Definition: failurecounter.h:104
static int grand_total_tests
Definition: failurecounter.h:23
bool isTrue(bool actual)
Definition: failurecounter.h:213
Definition: failurecounter.h:19