41#define Cons(sig) StringIds::ctor_ ## sig
42#define OpSet(sig) StringIds::op_set_ ## sig
44static const char*
const exceptions[] = {
45 "unknown exception",
"out_of_range",
"length_error",
46 "bad_alloc",
"exception"
56#define alloc_test_cases void_test_cases
59#define TEST(dummy) { \
60 __LINE__, -1, -1, -1, -1, -1, \
61 0, 0, dummy, sizeof dummy - 1, \
80#define cptr_alloc_test_cases cptr_test_cases
83#define TEST(arg, res) { \
84 __LINE__, -1, -1, -1, -1, -1, \
85 0, 0, arg, sizeof arg - 1, \
86 res, sizeof res - 1, 0 \
101 TEST (
"cdefaihjb",
"cdefaihjb"),
103 TEST (
"<U0>@2ab",
""),
104 TEST (
"a<U0>@2b",
"a"),
105 TEST (
"ab<U0>@2",
"ab"),
106 TEST (
"abefdcc<U0>a",
"abefdcc"),
108 TEST (
"x@128",
"x@128"),
109 TEST (
"x@207",
"x@207"),
110 TEST (
"x@334",
"x@334"),
111 TEST (
"x@540",
"x@540"),
112 TEST (
"x@873",
"x@873"),
113 TEST (
"x@1412",
"x@1412"),
114 TEST (
"x@3695",
"x@3695"),
115 TEST (
"x@4096",
"x@4096"),
117 TEST (
"last test",
"last test")
125cstr_test_cases [] = {
128#define TEST(arg, res) { \
129 __LINE__, -1, -1, -1, -1, -1, \
130 0, 0, arg, sizeof arg - 1, \
131 res, sizeof res - 1, 0 \
142 TEST (
"<U0>",
"<U0>"),
143 TEST (
"<U0>@2",
"<U0>@2"),
147 TEST (
"cdefaihjb",
"cdefaihjb"),
149 TEST (
"<U0>@2ab",
"<U0>@2ab"),
150 TEST (
"a<U0>@2b",
"a<U0>@2b"),
151 TEST (
"ab<U0>@2",
"ab<U0>@2"),
152 TEST (
"abefdcc<U0>a",
"abefdcc<U0>a"),
154 TEST (
"x@128",
"x@128"),
155 TEST (
"x@207",
"x@207"),
156 TEST (
"x@334",
"x@334"),
157 TEST (
"x@540",
"x@540"),
158 TEST (
"x@873",
"x@873"),
159 TEST (
"x@1412",
"x@1412"),
160 TEST (
"x@3695",
"x@3695"),
161 TEST (
"x@4096",
"x@4096"),
163 TEST (
"last test",
"last test")
171cptr_size_test_cases [] = {
173#define cptr_size_alloc_test_cases cptr_size_test_cases
176#define TEST(arg, size, res) { \
177 __LINE__, -1, size, -1, -1, -1, \
178 0, 0, arg, sizeof arg - 1, \
179 res, sizeof res - 1, 0 \
188 TEST (
"ab", 2,
"ab"),
191 TEST (
"<U0>", 1,
"<U0>"),
194 TEST (
"bcd", 3,
"bcd"),
195 TEST (
"cdefaihjb", 9,
"cdefaihjb"),
197 TEST (
"<U0>@2ab", 1,
"<U0>"),
198 TEST (
"<U0>@2ab", 4,
"<U0>@2ab"),
199 TEST (
"a<U0>@2b", 4,
"a<U0>@2b"),
200 TEST (
"ab<U0>@2", 3,
"ab<U0>"),
201 TEST (
"abefdcc<U0>a", 7,
"abefdcc"),
202 TEST (
"abefdcc<U0>a", 8,
"abefdcc<U0>"),
203 TEST (
"abefdcc<U0>a", 9,
"abefdcc<U0>a"),
205 TEST (
"x@207", 207,
"x@207"),
206 TEST (
"x@334", 207,
"x@207"),
207 TEST (
"x@207", 128,
"x@128"),
208 TEST (
"x@1412", 873,
"x@873"),
209 TEST (
"x@1412", 1412,
"x@1412"),
210 TEST (
"x@1412", 540,
"x@540"),
211 TEST (
"x@873", 873,
"x@873"),
212 TEST (
"x@3695", 2284,
"x@2284"),
213 TEST (
"x@4096", 4096,
"x@4096"),
215 TEST (
"last test", 9,
"last test")
223cstr_size_test_cases [] = {
226#define TEST(arg, off, res, bthrow) { \
227 __LINE__, off, -1, -1, -1, -1, \
228 0, 0, arg, sizeof arg - 1, \
229 res, sizeof res - 1, bthrow \
241 TEST (
"ab", 0,
"ab", 0),
244 TEST (
"<U0>", 0,
"<U0>", 0),
245 TEST (
"<U0>@2", 0,
"<U0>@2", 0),
246 TEST (
"<U0>@2", 1,
"<U0>", 0),
247 TEST (
"<U0>@2", 2,
"", 0),
249 TEST (
"a", 0,
"a", 0),
250 TEST (
"bcd", 0,
"bcd", 0),
251 TEST (
"cdefaihjb", 0,
"cdefaihjb", 0),
253 TEST (
"<U0>@2ab", 0,
"<U0>@2ab", 0),
254 TEST (
"<U0>@2ab", 1,
"<U0>ab", 0),
255 TEST (
"a<U0>@2b", 0,
"a<U0>@2b", 0),
256 TEST (
"a<U0>@2b", 1,
"<U0>@2b", 0),
257 TEST (
"a<U0>@2b", 2,
"<U0>b", 0),
258 TEST (
"ab<U0>@2", 0,
"ab<U0>@2", 0),
259 TEST (
"ab<U0>@2", 2,
"<U0>@2", 0),
260 TEST (
"ab<U0>@2", 4,
"", 0),
261 TEST (
"abefdcc<U0>a", 0,
"abefdcc<U0>a", 0),
262 TEST (
"abefdcc<U0>a", 7,
"<U0>a", 0),
264 TEST (
"x@207", 0,
"x@207", 0),
265 TEST (
"x@334", 127,
"x@207", 0),
266 TEST (
"x@1412", 872,
"x@540", 0),
267 TEST (
"x@1412", 0,
"x@1412", 0),
268 TEST (
"x@1412", 539,
"x@873", 0),
269 TEST (
"x@873", 0,
"x@873", 0),
270 TEST (
"x@3695", 0,
"x@3695", 0),
271 TEST (
"x@4096", 0,
"x@4096", 0),
273 TEST (
"abc", 5,
"abc", 1),
274 TEST (
"x@4096", 4106,
"x@4096", 1),
276 TEST (
"last test", 0,
"last test", 0)
287#define range_test_cases cstr_size_size_test_cases
288#define cstr_size_size_alloc_test_cases cstr_size_size_test_cases
289#define range_alloc_test_cases cstr_size_size_test_cases
292#define TEST(arg, off, size, res, bthrow) { \
293 __LINE__, -1, -1, off, size, -1, \
294 0, 0, arg, sizeof arg - 1, \
295 res, sizeof res - 1, bthrow \
308 TEST (
"ab", 0, 2,
"ab", 0),
310 TEST (
"", 0, 0,
"", 0),
311 TEST (
"<U0>", 0, 1,
"<U0>", 0),
312 TEST (
"<U0>@2", 0, 2,
"<U0>@2", 0),
314 TEST (
"a", 0, 1,
"a", 0),
315 TEST (
"bcd", 0, 3,
"bcd", 0),
316 TEST (
"cdefaihjb", 0, 9,
"cdefaihjb", 0),
318 TEST (
"<U0>@2ab", 0, 4,
"<U0>@2ab", 0),
319 TEST (
"a<U0>@2b", 0, 4,
"a<U0>@2b", 0),
320 TEST (
"ab<U0>@2", 0, 4,
"ab<U0>@2", 0),
321 TEST (
"abefdcc<U0>a", 0, 9,
"abefdcc<U0>a", 0),
323 TEST (
"x@207", 0, 207,
"x@207", 0),
324 TEST (
"x@334", 10, 207,
"x@207", 0),
325 TEST (
"x@207", 50, 128,
"x@128", 0),
326 TEST (
"x@1412", 128, 873,
"x@873", 0),
327 TEST (
"x@1412", 0, 1412,
"x@1412", 0),
328 TEST (
"x@1412", 207, 540,
"x@540", 0),
329 TEST (
"x@874", 1, 873,
"x@873", 0),
330 TEST (
"x@3695", 10, 2284,
"x@2284", 0),
331 TEST (
"x@4096", 0, 4096,
"x@4096", 0),
333 TEST (
"abc", 5, 3,
"", 1),
334 TEST (
"x@4096", 4106, 3,
"", 1),
336 TEST (
"last test", 0, 9,
"last test", 0)
344size_val_test_cases [] = {
346#define size_val_alloc_test_cases size_val_test_cases
349#define TEST(size, val, res) { \
350 __LINE__, -1, size, -1, -1, val, \
352 res, sizeof res - 1, 0 \
362 TEST (1,
'\0',
"<U0>"),
365 TEST (2,
'\0',
"<U0>@2"),
367 TEST (5,
'\0',
"<U0>@5"),
368 TEST (10,
'a',
"aaaaaaaaaa"),
370 TEST (128,
'x',
"x@128"),
371 TEST (207,
'x',
"x@207"),
372 TEST (540,
'x',
"x@540"),
373 TEST (873,
'x',
"x@873"),
374 TEST (1412,
'x',
"x@1412"),
375 TEST (3695,
'x',
"x@3695"),
377 TEST (4096,
'x',
"x@4096"),
379 TEST (4,
't',
"tttt")
386cptr_op_set_test_cases [] = {
389#define TEST(str, arg, res, bthrow) { \
390 __LINE__, -1, -1, -1, -1, -1, \
391 str, sizeof str - 1, arg, sizeof arg - 1, \
392 res, sizeof res - 1, bthrow \
404 TEST (
"",
"ab",
"ab", 0),
406 TEST (
"",
"",
"", 0),
407 TEST (
"abc",
"",
"", 0),
408 TEST (
"",
"<U0>",
"", 0),
409 TEST (
"abc",
"<U0>",
"", 0),
411 TEST (
"",
"a",
"a", 0),
412 TEST (
"<U0>@2",
"a",
"a", 0),
413 TEST (
"a",
"bcd",
"bcd", 0),
414 TEST (
"x@4096",
"bcd",
"bcd", 0),
415 TEST (
"",
"cdefaihjb",
"cdefaihjb", 0),
416 TEST (
"a<U0>b",
"cdefaihjb",
"cdefaihjb", 0),
418 TEST (
"",
"<U0>@2ab",
"", 0),
419 TEST (
"c<U0>d",
"<U0>@2ab",
"", 0),
420 TEST (
"",
"a<U0>@2b",
"a", 0),
421 TEST (
"bcd",
"a<U0>@2b",
"a", 0),
422 TEST (
"<U0>",
"ab<U0>@2",
"ab", 0),
423 TEST (
"x@4096",
"ab<U0>@2",
"ab", 0),
424 TEST (
"<U0>a",
"abefdcc<U0>a",
"abefdcc", 0),
425 TEST (
"x@4096",
"abefdcc<U0>a",
"abefdcc", 0),
427 TEST (
"",
"x@207",
"x@207", 0),
428 TEST (
"x@128",
"x@207",
"x@207", 0),
429 TEST (
"x@540",
"x@207",
"x@207", 0),
430 TEST (
"",
"x@1412",
"x@1412", 0),
431 TEST (
"x@128",
"x@1412",
"x@1412", 0),
432 TEST (
"x@3695",
"x@1412",
"x@1412", 0),
433 TEST (
"x@872",
"x@873",
"x@873", 0),
434 TEST (
"x@873",
"x@3695",
"x@3695", 0),
436 TEST (
"abc",
"x@4096",
"x@4096", 0),
439 TEST (
"a<U0>b<U0>", 0,
"a", 0),
440 TEST (
"x@4096", 0,
"x@4096", 0),
442 TEST (
"abcd",
"x@4096",
"x@4096", 0),
444 TEST (
"",
"last test",
"last test", 0)
451cstr_op_set_test_cases [] = {
454#define TEST(str, arg, res, bthrow) { \
455 __LINE__, -1, -1, -1, -1, -1, \
456 str, sizeof str - 1, arg, sizeof arg - 1, \
457 res, sizeof res - 1, bthrow \
469 TEST (
"",
"ab",
"ab", 0),
471 TEST (
"",
"",
"", 0),
472 TEST (
"abc",
"",
"", 0),
473 TEST (
"",
"<U0>",
"<U0>", 0),
474 TEST (
"abc",
"<U0>",
"<U0>", 0),
476 TEST (
"",
"a",
"a", 0),
477 TEST (
"<U0>@2",
"a",
"a", 0),
478 TEST (
"a",
"bcd",
"bcd", 0),
479 TEST (
"x@4096",
"bcd",
"bcd", 0),
480 TEST (
"",
"cdefaihjb",
"cdefaihjb", 0),
481 TEST (
"a<U0>b",
"cdefaihjb",
"cdefaihjb", 0),
483 TEST (
"",
"<U0>@2ab",
"<U0>@2ab", 0),
484 TEST (
"c<U0>d",
"<U0>@2ab",
"<U0>@2ab", 0),
485 TEST (
"",
"a<U0>@2b",
"a<U0>@2b", 0),
486 TEST (
"bcd",
"a<U0>@2b",
"a<U0>@2b", 0),
487 TEST (
"<U0>",
"ab<U0>@2",
"ab<U0>@2", 0),
488 TEST (
"x@4096",
"ab<U0>@2",
"ab<U0>@2", 0),
489 TEST (
"<U0>a",
"abefdcc<U0>a",
"abefdcc<U0>a", 0),
490 TEST (
"x@4096",
"abefdcc<U0>a",
"abefdcc<U0>a", 0),
492 TEST (
"",
"x@207",
"x@207", 0),
493 TEST (
"x@128",
"x@207",
"x@207", 0),
494 TEST (
"x@540",
"x@207",
"x@207", 0),
495 TEST (
"",
"x@1412",
"x@1412", 0),
496 TEST (
"x@128",
"x@1412",
"x@1412", 0),
497 TEST (
"x@3695",
"x@1412",
"x@1412", 0),
498 TEST (
"x@872",
"x@873",
"x@873", 0),
499 TEST (
"x@873",
"x@3695",
"x@3695", 0),
501 TEST (
"abc",
"x@4096",
"x@4096", 0),
504 TEST (
"a<U0>b<U0>", 0,
"a<U0>b<U0>", 0),
505 TEST (
"x@4096", 0,
"x@4096", 0),
507 TEST (
"",
"last test",
"last test", 0)
516val_op_set_test_cases [] = {
519#define TEST(str, val, res) { \
520 __LINE__, -1, -1, -1, -1, val, \
521 str, sizeof str - 1, 0, 0, \
522 res, sizeof res - 1, 0 \
532 TEST (
"abcdef",
'a',
"a"),
533 TEST (
"",
'\0',
"<U0>"),
534 TEST (
"a",
'\0',
"<U0>"),
535 TEST (
"<U0>@2",
'x',
"x"),
537 TEST (
"x@207",
'a',
"a"),
538 TEST (
"x@873",
'\0',
"<U0>"),
539 TEST (
"x@2284",
't',
"t"),
540 TEST (
"x@4096",
'x',
"x"),
549template <
class String,
class Iterator>
582template <
class String,
class Iterator>
598 const std::size_t
off = reverse_iter ?
600 const std::size_t ext = tdata.
ext2_;
618template <
class charT,
class Traits,
class Allocator>
620 std::basic_string <charT, Traits, Allocator> > &rng,
623 typedef std::basic_string <charT, Traits, Allocator>
String;
632 const std::size_t arg_off = -1 != tcase.
off ?
633 std::size_t (tcase.
off) : std::size_t (tcase.
off2);
634 const std::size_t arg_size = -1 != tcase.
size ?
635 std::size_t (tcase.
size) : std::size_t (tcase.
size2);
638 const charT*
const arg_ptr =
arg.c_str ();
644 const char* expected = 0;
647#ifndef _RWSTD_NO_EXCEPTIONS
650 &&
Cons (range_alloc) !=
func.which_)
651 expected = exceptions [1];
652 else if (2 == tcase.
bthrow)
653 expected = exceptions [2];
669 switch (
func.which_) {
676 ret_ptr =
new String (arg_alc);
680 ret_ptr =
new String (arg_ptr);
683 case Cons (cptr_alloc):
684 ret_ptr =
new String (arg_ptr, arg_alc);
688 ret_ptr =
new String (arg_str);
691 case Cons (cptr_size):
692 ret_ptr =
new String (arg_ptr, arg_size);
695 case Cons (cptr_size_alloc):
696 ret_ptr =
new String (arg_ptr, arg_size, arg_alc);
699 case Cons (cstr_size):
700 ret_ptr =
new String (arg_str, arg_off);
703 case Cons (cstr_size_size):
704 ret_ptr =
new String (arg_str, arg_off, arg_size);
707 case Cons (cstr_size_size_alloc):
708 ret_ptr =
new String (arg_str, arg_off, arg_size, arg_alc);
711 case Cons (size_val):
712 ret_ptr =
new String (arg_size, arg_val);
715 case Cons (size_val_alloc):
716 ret_ptr =
new String (arg_size, arg_val, arg_alc);
720 ret_ptr = &rng (
arg, tdata);
723 case Cons (range_alloc):
724 ret_ptr = &rng (
arg, tdata);
728 RW_ASSERT (!
"logic error: unknown constructor overload");
732 static const int cwidth =
sizeof (
charT);
736 "line %d. %{$FUNCALL} expected %{/*.*Gs}, got null",
737 __LINE__, cwidth, int (tdata.
reslen_), tdata.
res_);
743 "line %d. %{$FUNCALL} expected %{/*.*Gs} with "
744 "length %zu, got %{/*.*Gs} with length %zu",
747 tdata.
reslen_, cwidth, int (ret_ptr->size ()),
748 ret_ptr->data (), ret_ptr->size ());
752 rw_assert (ret_ptr->size () <= ret_ptr->capacity (), 0,
753 tcase.
line,
"line %d. %{$FUNCALL} expected "
754 "capacity () >= size (), got capacity () == "
755 "%zu, size () == %zu", __LINE__,
756 ret_ptr->capacity (), ret_ptr->size ());
759 if (tdata.
reslen_ == ret_ptr->size ()) {
763 const std::size_t match =
764 rw_match (tcase.
res, ret_ptr->c_str (), ret_ptr->size ());
767 "line %d. %{$FUNCALL} expected %{/*.*Gs}, "
768 "got %{/*.*Gs}, difference at offset %zu",
771 cwidth, int (ret_ptr->size ()),
772 ret_ptr->data (), match);
779#ifndef _RWSTD_NO_EXCEPTIONS
781 catch (
const std::out_of_range &ex) {
784 "line %d. %{$FUNCALL} %{?}expected %s,%{:}"
785 "unexpectedly%{;} caught std::%s(%#s)",
786 __LINE__, 0 != expected, expected,
caught, ex.what ());
788 catch (
const std::length_error &ex) {
791 "line %d. %{$FUNCALL} %{?}expected %s,%{:}"
792 "unexpectedly%{;} caught std::%s(%#s)",
793 __LINE__, 0 != expected, expected,
caught, ex.what ());
798 "line %d. %{$FUNCALL} %{?}expected %s,%{:}"
799 "unexpectedly%{;} caught std::%s(%#s)",
800 __LINE__, 0 != expected, expected,
caught, ex.what ());
805 "line %d. %{$FUNCALL} %{?}expected %s,%{:}"
806 "unexpectedly%{;} caught std::%s(%#s)",
807 __LINE__, 0 != expected, expected,
caught, ex.what ());
812 "line %d. %{$FUNCALL} %{?}expected %s,%{:}"
813 "unexpectedly%{;} caught %s",
814 __LINE__, 0 != expected, expected,
caught);
824 const std::size_t expect_blocks = nblocks;
827 "line %d. %{$FUNCALL} allocated %td bytes in %td blocks",
828 __LINE__, nbytes, expect_blocks);
833template <
class charT,
class Traits,
class Allocator>
837 typedef std::basic_string <charT, Traits, Allocator>
String;
854 const charT*
const arg_ptr = tcase.
arg ?
arg.data () :
str.data ();
858 std::size_t total_length_calls = 0;
859 std::size_t n_length_calls = 0;
860 std::size_t*
const rg_calls =
OpSet (cptr) ==
func.which_ ?
864 total_length_calls = rg_calls [TraitsFunc::length];
872 std::size_t throw_count;
873 for (throw_count = 0; ; ++throw_count) {
876 const char* expected = 0;
879#ifndef _RWSTD_NO_EXCEPTIONS
885 expected = exceptions [3];
906 switch (
func.which_) {
921 RW_ASSERT (!
"logic error: unknown operator= overload");
925 static const int cwidth =
sizeof (
charT);
929 "line %d. %{$FUNCALL} expected %{/*.*Gs} with "
930 "length %zu, got %{/*.*Gs} with length %zu",
940 const std::size_t match =
944 "line %d. %{$FUNCALL} expected %{/*.*Gs}, "
945 "got %{/*.*Gs}, difference at offset %zu",
948 cwidth, int (
str.size ()),
str.data (), match);
953 rw_assert (n_length_calls - total_length_calls > 0,
954 0, tcase.
line,
"line %d. %{$FUNCALL} doesn't "
955 "use traits::length()", __LINE__);
959#ifndef _RWSTD_NO_EXCEPTIONS
964 "line %d. %{$FUNCALL} %{?}expected %s,%{:}"
965 "unexpectedly%{;} caught std::%s(%#s)",
966 __LINE__, 0 != expected, expected,
caught, ex.what ());
971 "line %d. %{$FUNCALL} %{?}expected %s,%{:}"
972 "unexpectedly%{;} caught std::%s(%#s)",
973 __LINE__, 0 != expected, expected,
caught, ex.what ());
978 "line %d. %{$FUNCALL} %{?}expected %s,%{:}"
979 "unexpectedly%{;} caught %s",
980 __LINE__, 0 != expected, expected,
caught);
988 std::size_t (-1), std::size_t (-1));
1003 else if (0 < tcase.
bthrow) {
1005 "line %d. %{$FUNCALL} %{?}expected %s, caught %s"
1006 "%{:}unexpectedly caught %s%{;}",
1013 std::size_t expect_throws = 0;
1017#ifndef _RWSTD_NO_REPLACEABLE_NEW_DELETE
1033 "line %d: %{$FUNCALL}: expected exactly 1 %s exception "
1034 "while changing capacity from %zu to %zu, got %zu",
1035 __LINE__, exceptions [3],
1045template <
class charT,
class Traits,
class Allocator>
1049 typedef std::basic_string<charT, Traits, Allocator>
String;
1066#define TEST(Iterator) do { \
1067 typedef typename String::Iterator Iter; \
1069 ConsRangeOverload<String, Iter> rng; \
1070 test_cons ((charT*)0, (Traits*)0, (Allocator*)0, rng, tdata); \
1086#define TEST(Iterator) do { \
1087 typedef Iterator<charT> Iter; \
1089 ConsRange<String, Iter> rng; \
1090 test_cons ((charT*)0, (Traits*)0, (Allocator*)0, rng, tdata); \
1099 rw_error (0, 0, __LINE__,
"bad iterator id");
1119#define TEST(sig) { \
1120 Cons (sig), sig ## _test_cases, \
1121 sizeof sig ## _test_cases / sizeof *sig ## _test_cases \
1130 TEST (cptr_size_alloc),
1132 TEST (cstr_size_size),
1133 TEST (cstr_size_size_alloc),
1135 TEST (size_val_alloc),
1140#define TEST(sig) { \
1141 OpSet (sig), sig ## _op_set_test_cases, \
1142 sizeof sig ## _op_set_test_cases \
1143 / sizeof *sig ## _op_set_test_cases \
1152 const std::size_t test_count =
sizeof tests /
sizeof *tests;
1157 test_cons_func_array, tests, test_count);
#define cstr_size_size_test_cases
void test_op_set(charT *, Traits *, Allocator *, const StringTestCaseData< charT > &tdata)
void test_cons(charT *, Traits *, Allocator *, const RangeBase< std::basic_string< charT, Traits, Allocator > > &rng, const StringTestCaseData< charT > &tdata)
std::char_traits< S > Traits
const StringTestCase & tcase_
_TEST_EXPORT void rw_check_leaks(const SharedAlloc *=0, int=0, _RWSTD_SIZE_T=0, _RWSTD_SIZE_T=_RWSTD_SIZE_MAX)
UserChar make_char(char c, UserChar *)
_RWSTD_SIZE_T * rw_get_call_counters(std::char_traits< charT > *, charT *)
_TEST_EXPORT _RWSTD_SIZE_T rw_match(const char *, const char *, _RWSTD_SIZE_T=_RWSTD_SIZE_MAX)
_TEST_EXPORT int rw_assert(int, const char *, int, const char *,...)
_TEST_EXPORT int rw_error(int, const char *, int, const char *,...)
_TEST_EXPORT _RWSTD_SIZE_T rwt_check_leaks(_RWSTD_SIZE_T *, const rwt_free_store *)
_TEST_EXPORT rwt_free_store * rwt_get_free_store(rwt_free_store *)
StringState rw_get_string_state(const String &str)
_TEST_EXPORT int rw_run_string_test(int, char **, const char *, const char *, StringTestFunc *, const StringTest *, _RWSTD_SIZE_T)
#define DEFINE_STRING_TEST_FUNCTIONS(fname)
String::iterator StringIter
String::value_type StringChar
String::allocator_type StringAlloc
virtual List & operator()(List &list_arg, const ContainerTestCaseData< ListVal > &tdata) const
String::allocator_type StringAlloc
String::value_type StringChar
virtual List & operator()(List &, const ContainerTestCaseData< ListVal > &tdata) const
String::iterator StringIter
static ContIter begin(List &cont, ContIter *)
static SharedAlloc * instance(SharedAlloc *=0)
_RWSTD_SIZE_T throw_at_calls_[n_funs]
StringIds::OverloadId which_
StringIds::IteratorId iter_id_
int assert_equal(const StringState &, int, int, const char *) const
_RWSTD_SIZE_T * throw_at_calls_[2]
_RWSTD_SIZE_T new_calls_[2]