📄 tassert.h
字号:
#if !defined (TASSERT_HXX)
#define TASSERT_HXX
#include <list>
#if 0 // If you are having bib memory problems with your compiler - try putting this to 1
#define tassert assert
#else
#define tassert(expr) \
if ( tassert_enabled ) \
{ \
if (!(expr)) \
{ \
CritLog(<<"TESTASSERT: "#expr); \
tassert_enabled = 0; \
tassert_failure = 1; \
tassert_location.push_back(__LINE__); \
} \
} \
else \
{ \
CritLog(<<"SUPRESSED: "#expr); \
}
#endif
#define tassert_broken(x) tassert(!(x))
#define tassert_reset() (tassert_enabled = 1, tassert_failure = 0)
#define tassert_verify(x) { \
CritLog(<<"TASSERT: Section " << (tassert_failure ? "FAILED":"PASSED")); \
assert(x > 0 && x <= tassert_ncases); \
tassert_results[x-1].result = !tassert_failure; \
tassert_results[x-1].ran = true; \
}
static int tassert_enabled = 1;
static int tassert_failure = 0;
static int tassert_stack[10];
const int tassert_nstack = sizeof(tassert_stack)/sizeof(*tassert_stack);
static int tassert_stack_ptr = 0;
const int tassert_max_cases = 100;
static int tassert_ncases = 0;
std::list<int> tassert_location;
struct _tassert {
bool ran;
bool result;
} tassert_results[tassert_max_cases];
#define tassert_push() \
{ \
assert(tassert_stack_ptr < tassert_nstack - 2); \
tassert_stack[tassert_stack_ptr++] = tassert_enabled; \
tassert_stack[tassert_stack_ptr++] = tassert_failure; \
}
#define tassert_pop() \
{ \
assert(tassert_stack_ptr > 1); \
tassert_failure = tassert_stack[--tassert_stack_ptr] ; \
tassert_enabled = tassert_stack[--tassert_stack_ptr]; \
}
#define tassert_init(nCases) \
{ \
\
assert(nCases < tassert_max_cases); \
tassert_ncases = nCases; \
for (int i = 0 ; i < tassert_ncases ; i++) \
{ \
tassert_results[i].ran = false; \
} \
}
#define tassert_report() \
{ \
bool overall = true; \
while (!tassert_location.empty()) { \
int line = tassert_location.front(); \
tassert_location.pop_front(); \
CritLog(<<__FILE__<<", line " << line <<": test failed."); \
} \
for(int i = 0; i < tassert_ncases ; i++) \
{ \
if (!tassert_results[i].ran) \
{ \
CritLog(<<"CASE " << i+1 << ": no results reported!"); \
overall = false; \
} \
else \
{ \
bool res = tassert_results[i].result; \
overall = overall && res; \
CritLog(<<"CASE "<<i+1<<": " << (res?"PASSED":"FAILED ***")); \
} \
} \
CritLog(<<"OVERALL RESULTS: " << (overall?"PASSED":"FAILED ***")); \
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -