Go to the documentation of this file.00001 #if ! defined(TS_TEST_BOX_HEADER)
00002 #define TS_TEST_BOX_HEADER
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 # include <ts/Regression.h>
00028
00029 namespace {
00030
00031
00032
00033
00034 struct TestBox {
00035 typedef TestBox self;
00036 RegressionTest* _test;
00037 int* _status;
00038
00039
00040 TestBox(RegressionTest* test, int* status) : _test(test), _status(status) {}
00041
00042
00043 TestBox(RegressionTest* test, int* status, int rstatus) : _test(test), _status(status) {
00044 *this = rstatus;
00045 }
00046
00047
00048 bool check(bool result, char const* fmt, ...) TS_PRINTFLIKE(3, 4);
00049
00050
00051 self& operator = (int status) { *_status = status; return *this; }
00052 };
00053
00054 bool TestBox::check(bool result, char const* fmt, ...) {
00055 if (!result) {
00056 static size_t const N = 1<<16;
00057 char buffer[N];
00058 va_list ap;
00059 va_start(ap, fmt);
00060 vsnprintf(buffer, N, fmt, ap);
00061 va_end(ap);
00062 rprintf(_test, "%s\n", buffer);
00063 *_status = REGRESSION_TEST_FAILED;
00064 }
00065 return result;
00066 }
00067 }
00068 #endif // TS_TEST_BOX_HEADER