1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
#include <stdlib.h>
#include <iostream>
using namespace std;
template <typename Type> void
check_failure(const char* str, Type actual, Type expected, const char* file,
int line, const char* func)
{
std::cerr << file << ":" << line << ": \"" << func << "\"" << std::endl;
std::cerr << "check \"" << str << "\"" << " failed. expected " << expected
<< ", actual " << actual << "." << std::endl;
exit(EXIT_FAILURE);
}
#define check_true(expr) \
do { \
bool actual = (expr); \
if (!actual) \
check_failure(#expr, actual, true, __FILE__, __LINE__, \
__PRETTY_FUNCTION__); \
} while (0)
#define check_zero(expr) \
do { \
int actual = (expr); \
if (actual != 0) \
check_failure(#expr, actual, 0, __FILE__, __LINE__, \
__PRETTY_FUNCTION__); \
} while (0)
#define check_equal(expr, expected) \
do { \
typeof (expected) actual = (expr); \
if (actual != expected) \
check_failure(#expr, actual, expected, __FILE__, __LINE__, \
__PRETTY_FUNCTION__); \
} while (0)
|