62 fail = line = __LINE__; \
63 signal (SIGABRT, handle_ABRT); \
64 if (0 == setjmp (env)) { \
67 rw_assert (0, 0, line, "expected assertion"); \
73 fail = -1; line = __LINE__; \
74 signal (SIGABRT, handle_ABRT); \
75 if (0 == setjmp (env)) \
77 else if (fail != line) { \
79 rw_assert (0, 0, line, "unexpected assertion"); \
86#define X2STR(ign1, ign2) "***NOT IMPLEMENTED ***"
104 "InputIter<UserClass> end iterator unexpectedly "
105 "not equal to self: %p == %p", end0.
cur_, end0.
cur_);
110 "InputIter<UserClass> end iterator unexpectedly "
111 "not equal to self: %p == %p", end0.
cur_, end0.
cur_);
117 "InputIter<UserClass> end iterator unexpectedly "
118 "not equal to another: %p == %p", end0.
cur_, end1.
cur_);
123 "InputIter<UserClass> end iterator unexpectedly "
124 "not equal to another: %p == %p", end0.
cur_, end1.
cur_);
133 FAIL (
x [0] = *end0);
134 FAIL (
x [0] = *end1);
136 FAIL (
equal =
int (
'a') == end0->data_.val_);
137 FAIL (
equal =
int (
'a') == end1->data_.val_);
159 "InputIter<UserClass> unexpectedly equal to end: "
160 "%p == %p", it.
cur_,
end.cur_);
167 "InputIter<UserClass> unexpectedly equal to end: "
168 "%p == %p", it.
cur_,
end.cur_);
176 "InputIter<UserClass> unexpectedly equal to self: "
191 "InputIter<UserClass> unexpectedly not qual to end: "
192 "%p != %p (diff = %d)",
196 "InputIter<UserClass> data mismatch: %s != %s",
215 PASS (
y [1] = *++it);
216 PASS (
y [2] = *it++);
217 PASS (
y [3] = *it++);
220 PASS (
y [5] = *it++);
227 "InputIter<UserClass> unexpectedly equal to end: "
228 "%p != %p (diff = %d)",
236 "InputIter<UserClass> unexpectedly not equal to end: "
237 "%p != %p (diff = %d)",
241 "InputIter<UserClass> data mismatch: %s != %s",
265 "InputIter<UserClass> unexpectedly not equal: "
266 "%p != %p (diff = %d)",
272 "InputIter<UserClass> unexpectedly equal to end: "
273 "%p == %p", it1.
cur_,
end.cur_);
278 rw_assert (
y [0].data_.val_ ==
y [1].data_.val_, 0, __LINE__,
279 "two copies of InputIter<UserClass> unexpectedly yield "
280 "different values: %d != %d",
281 y [0].data_.val_,
y [1].data_.val_);
290 "InputIter<UserClass> unexpectedly equal to end: "
291 "%p == %p", it1.
cur_,
end.cur_);
298 "InputIter<UserClass> unexpectedly not equal: "
304 rw_assert (
y [0].data_.val_ ==
y [1].data_.val_, 0, __LINE__,
305 "two copies of InputIter<UserClass> unexpectedly yield "
306 "different values: %d != %d",
307 y [0].data_.val_,
y [1].data_.val_);
309 rw_assert (
y [0].data_.val_ ==
'b', 0, __LINE__,
310 "InputIter<UserClass>::operator*() == %d, got %d",
311 y [0].data_.val_,
'b');
320 "InputIter<UserClass> unexpectedly equal to end: "
321 "%p == %p", it1.
cur_,
end.cur_);
348 rw_assert (0, 0, __LINE__,
"macro NDEBUG #defined, cannot test");
358int main (
int argc,
char *argv[])
362 _CrtSetReportMode (_CRT_ERROR, _CRTDBG_MODE_DEBUG);
365 return rw_test (argc, argv, __FILE__,
bool equal(const T &x, const U &y)
void run_test(const ForwardIterator &dummy, T *, Predicate *pred)
T * make_iter(T *cur, const T *, const T *, T *)
_TEST_EXPORT int rw_test(int argc, char *argv[], const char *filename, const char *clause, const char *comment, int(*testfun)(int, char **), const char *optspec,...)
_TEST_EXPORT int rw_assert(int, const char *, int, const char *,...)
static UserClass from_char(char c)
static int compare(const UserClass *, const char *, _RWSTD_SIZE_T=_RWSTD_SIZE_MAX)