Author: antonp
Date: Thu Jun 1 00:57:51 2006
New Revision: 410782
URL: http://svn.apache.org/viewvc?rev=410782&view=rev
Log:
2006-06-01 Anton Pevtsov <[EMAIL PROTECTED]>
* 21.string.cons.cpp (cptr_test_cases, cstr_test_cases, ...): Added
new test cases which contains strings with special length to
exercise memory allocation,
(test_cons_range): Changed signature
to take StringTestCaseData<charT> instead of charT* arrays and
their sizes and simplified definition.
(test_cons): Same.
(DEFINE_STRING_TEST_FUNCTIONS): Used to define an array of
pointers to specializations of the test_cons template,
thus obviating the need for the dispatch function.
(main): Passed test_cons_func_array defined by the macro
above to rw_run_string_test.
21.string.append.cpp: Added new test cases which contains strings
with special length to exercise memory allocation,
21.string.assign.cpp: Same
21.string.insert.cpp: Same
21.string.op.plus.equal.cpp: Same
21.string.replace.cpp: Same
Modified:
incubator/stdcxx/trunk/tests/strings/21.string.append.cpp
incubator/stdcxx/trunk/tests/strings/21.string.assign.cpp
incubator/stdcxx/trunk/tests/strings/21.string.cons.cpp
incubator/stdcxx/trunk/tests/strings/21.string.insert.cpp
incubator/stdcxx/trunk/tests/strings/21.string.op.plus.equal.cpp
incubator/stdcxx/trunk/tests/strings/21.string.replace.cpp
Modified: incubator/stdcxx/trunk/tests/strings/21.string.append.cpp
URL:
http://svn.apache.org/viewvc/incubator/stdcxx/trunk/tests/strings/21.string.append.cpp?rev=410782&r1=410781&r2=410782&view=diff
==============================================================================
--- incubator/stdcxx/trunk/tests/strings/21.string.append.cpp (original)
+++ incubator/stdcxx/trunk/tests/strings/21.string.append.cpp Thu Jun 1
00:57:51 2006
@@ -99,6 +99,16 @@
TEST ("[EMAIL PROTECTED]", "", "[EMAIL PROTECTED]",
0),
TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+
TEST ("", 0, "", 0),
TEST ("abc", 0, "abcabc", 0),
TEST ("a\0\0bc", 0, "a\0\0bca", 0),
@@ -161,6 +171,16 @@
TEST ("[EMAIL PROTECTED]", "", "[EMAIL PROTECTED]",
0),
TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+
TEST ("", 0, "", 0),
TEST ("abc", 0, "abcabc", 0),
TEST ("a\0\0bc", 0, "a\0\0bca\0\0bc", 0),
@@ -219,6 +239,19 @@
TEST ("\0ab\0\0c", "\0e\0", 1, "\0ab\0\0c\0", 0),
TEST ("a\0bc\0\0", "\0e", 2, "a\0bc\0\0\0e", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 118, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 79, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 127, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 127, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 206, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 333, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 873, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 539, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 1412, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 2284, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 2284, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 2284, "[EMAIL
PROTECTED]", 0),
+
TEST ("", 0, 0, "", 0),
TEST ("abc", 0, 0, "abc", 0),
TEST ("abc", 0, 1, "abca", 0),
@@ -312,11 +345,24 @@
TEST ("[EMAIL PROTECTED]", "", 0, 0, "[EMAIL PROTECTED]",
0),
TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 100, 10, "[EMAIL
PROTECTED]@10", 0),
- TEST ("", "\0", 2, 0, "", 1),
- TEST ("", "a", 2, 0, "", 1),
- TEST ("", "[EMAIL PROTECTED]", 4106, 0, "", 1),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 0, 118, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 50, 79, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 0, 127, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 10, 127, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 2, 206, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 3, 333, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 0, 873, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 1, 539, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 0, 1412, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 4, 2284, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 128, 2284, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 0, 2284, "[EMAIL
PROTECTED]", 0),
+
+ TEST ("", "\0", 2, 0, "", 1),
+ TEST ("", "a", 2, 0, "", 1),
+ TEST ("", "[EMAIL PROTECTED]", 4106, 0, "", 1),
- TEST ("last", "test", 0, 4, "lasttest", 0)
+ TEST ("last", "test", 0, 4, "lasttest", 0)
};
/**************************************************************************/
@@ -375,6 +421,15 @@
TEST ("", 4096, 'x', "[EMAIL PROTECTED]", 0),
TEST ("[EMAIL PROTECTED]", 0, 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 1, 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 7, 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 3, 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 1, 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 873, 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 1411, 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 1, 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 1, 'x', "[EMAIL PROTECTED]", 0),
+
TEST ("last", 4, 't', "lasttttt", 0)
};
@@ -413,6 +468,15 @@
TEST ("\0abc\0\0", 'a', "\0abc\0\0a", 0),
TEST ("[EMAIL PROTECTED]", 'x', "[EMAIL PROTECTED]", 0),
+
+ TEST ("[EMAIL PROTECTED]", 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 'x', "[EMAIL PROTECTED]", 0),
TEST ("last", 't', "lastt", 0)
};
Modified: incubator/stdcxx/trunk/tests/strings/21.string.assign.cpp
URL:
http://svn.apache.org/viewvc/incubator/stdcxx/trunk/tests/strings/21.string.assign.cpp?rev=410782&r1=410781&r2=410782&view=diff
==============================================================================
--- incubator/stdcxx/trunk/tests/strings/21.string.assign.cpp (original)
+++ incubator/stdcxx/trunk/tests/strings/21.string.assign.cpp Thu Jun 1
00:57:51 2006
@@ -92,6 +92,15 @@
TEST ("[EMAIL PROTECTED]", "", "", 0),
TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+
TEST ("", 0, "", 0),
TEST ("abc", 0, "abc", 0),
TEST ("a\0\0bc", 0, "a", 0),
@@ -156,6 +165,15 @@
TEST ("[EMAIL PROTECTED]", "", "", 0),
TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+
TEST ("", 0, "", 0),
TEST ("abc", 0, "abc", 0),
TEST ("a\0\0bc", 0, "a\0\0bc", 0),
@@ -233,6 +251,15 @@
TEST ("[EMAIL PROTECTED]", "", 0, "", 0),
TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 2048, "[EMAIL
PROTECTED]", 0),
+ TEST ("", "[EMAIL PROTECTED]", 207, "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 207, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 128, "[EMAIL
PROTECTED]", 0),
+ TEST ("", "[EMAIL PROTECTED]", 873, "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 1412, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 540, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 873, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 2284, "[EMAIL
PROTECTED]", 0),
+
TEST ("", "", -1, "", 2),
TEST ("last", "test", 4, "test", 0)
@@ -318,6 +345,15 @@
TEST ("", "[EMAIL PROTECTED]", 0, 4096, "[EMAIL PROTECTED]",
0),
TEST ("", "[EMAIL PROTECTED]", 100, 2000, "[EMAIL PROTECTED]",
0),
+ TEST ("", "[EMAIL PROTECTED]", 0, 207, "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 10, 207, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 50, 128, "[EMAIL
PROTECTED]", 0),
+ TEST ("", "[EMAIL PROTECTED]", 128, 873, "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 0,1412, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 207, 540, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 1, 873, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 10, 2284, "[EMAIL
PROTECTED]", 0),
+
TEST ("", "\0", 2, 0, "", 1),
TEST ("", "a", 2, 0, "", 1),
TEST ("", "[EMAIL PROTECTED]", 4106, 0, "", 1),
@@ -376,6 +412,15 @@
TEST ("", 4096, 'x', "[EMAIL PROTECTED]", 0),
TEST ("[EMAIL PROTECTED]", 0, 'x', "", 0),
+
+ TEST ("[EMAIL PROTECTED]", 128, 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 207, 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 128, 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("", 540, 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("xx", 873, 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 1412, 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 207, 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 3695, 'x', "[EMAIL PROTECTED]", 0),
TEST ("", -1, 'x', "", 2),
Modified: incubator/stdcxx/trunk/tests/strings/21.string.cons.cpp
URL:
http://svn.apache.org/viewvc/incubator/stdcxx/trunk/tests/strings/21.string.cons.cpp?rev=410782&r1=410781&r2=410782&view=diff
==============================================================================
--- incubator/stdcxx/trunk/tests/strings/21.string.cons.cpp (original)
+++ incubator/stdcxx/trunk/tests/strings/21.string.cons.cpp Thu Jun 1 00:57:51
2006
@@ -46,7 +46,7 @@
// exercises:
// basic_string (void)
static const StringTestCase
-void_test_cases [] = {
+void_test_cases [] = {
#undef TEST
#define TEST(dummy) { \
@@ -96,6 +96,13 @@
TEST ("ab\0\0", "ab"),
TEST ("abefdcc\0a", "abefdcc"),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]"),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]"),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]"),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]"),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]"),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]"),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]"),
TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]"),
TEST ("last test", "last test")
@@ -135,6 +142,13 @@
TEST ("ab\0\0", "ab\0\0"),
TEST ("abefdcc\0a", "abefdcc\0a"),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]"),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]"),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]"),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]"),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]"),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]"),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]"),
TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]"),
TEST ("last test", "last test")
@@ -177,6 +191,14 @@
TEST ("abefdcc\0a", 8, "abefdcc\0"),
TEST ("abefdcc\0a", 9, "abefdcc\0a"),
+ TEST ("[EMAIL PROTECTED]", 207, "[EMAIL PROTECTED]"),
+ TEST ("[EMAIL PROTECTED]", 207, "[EMAIL PROTECTED]"),
+ TEST ("[EMAIL PROTECTED]", 128, "[EMAIL PROTECTED]"),
+ TEST ("[EMAIL PROTECTED]", 873, "[EMAIL PROTECTED]"),
+ TEST ("[EMAIL PROTECTED]", 1412, "[EMAIL PROTECTED]"),
+ TEST ("[EMAIL PROTECTED]", 540, "[EMAIL PROTECTED]"),
+ TEST ("[EMAIL PROTECTED]", 873, "[EMAIL PROTECTED]"),
+ TEST ("[EMAIL PROTECTED]", 2284, "[EMAIL PROTECTED]"),
TEST ("[EMAIL PROTECTED]", 4096, "[EMAIL PROTECTED]"),
TEST ("last test", 9, "last test")
@@ -210,16 +232,31 @@
TEST ("", 0, "", 0),
TEST ("\0", 0, "\0", 0),
TEST ("\0\0", 0, "\0\0", 0),
+ TEST ("\0\0", 1, "\0", 0),
+ TEST ("\0\0", 2, "", 0),
TEST ("a", 0, "a", 0),
TEST ("bcd", 0, "bcd", 0),
TEST ("cdefaihjb", 0, "cdefaihjb", 0),
- TEST ("\0\0ab", 0, "\0\0ab", 0),
+ TEST ("\0\0ab", 0, "\0\0ab", 0),
+ TEST ("\0\0ab", 1, "\0ab", 0),
TEST ("a\0\0b", 0, "a\0\0b", 0),
- TEST ("ab\0\0", 0, "ab\0\0", 0),
+ TEST ("a\0\0b", 1, "\0\0b", 0),
+ TEST ("a\0\0b", 2, "\0b", 0),
+ TEST ("ab\0\0", 0, "ab\0\0", 0),
+ TEST ("ab\0\0", 2, "\0\0", 0),
+ TEST ("ab\0\0", 4, "", 0),
TEST ("abefdcc\0a", 0, "abefdcc\0a", 0),
+ TEST ("abefdcc\0a", 7, "\0a", 0),
+ TEST ("[EMAIL PROTECTED]", 0, "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 127, "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 872, "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 539, "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, "[EMAIL PROTECTED]", 0),
TEST ("[EMAIL PROTECTED]", 0, "[EMAIL PROTECTED]", 0),
TEST ("abc", 5, "abc", 1),
@@ -270,6 +307,14 @@
TEST ("ab\0\0", 0, 4, "ab\0\0", 0),
TEST ("abefdcc\0a", 0, 9, "abefdcc\0a", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 207, "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 10, 207, "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 50, 128, "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 128, 873, "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 1412, "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 207, 540, "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 1, 873, "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 10, 2284, "[EMAIL PROTECTED]", 0),
TEST ("[EMAIL PROTECTED]", 0, 4096, "[EMAIL PROTECTED]", 0),
TEST ("abc", 5, 3, "abc", 1),
@@ -307,6 +352,13 @@
TEST (5, '\0', "\0\0\0\0\0"),
TEST (10, 'a', "aaaaaaaaaa"),
+ TEST (128, 'x', "[EMAIL PROTECTED]"),
+ TEST (207, 'x', "[EMAIL PROTECTED]"),
+ TEST (540, 'x', "[EMAIL PROTECTED]"),
+ TEST (873, 'x', "[EMAIL PROTECTED]"),
+ TEST (1412, 'x', "[EMAIL PROTECTED]"),
+ TEST (3695, 'x', "[EMAIL PROTECTED]"),
+
TEST (4096, 'x', "[EMAIL PROTECTED]"),
TEST (4, 't', "tttt")
@@ -357,13 +409,22 @@
TEST ("\0a", "abefdcc\0a", "abefdcc", 0),
TEST ("[EMAIL PROTECTED]", "abefdcc\0a", "abefdcc", 0),
+ TEST ("", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]",
0),
+ TEST ("", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]",
0),
+
TEST ("abc", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 0),
TEST ("", 0, "", 0),
TEST ("a\0b\0", 0, "a", 0),
TEST ("[EMAIL PROTECTED]", 0, "[EMAIL PROTECTED]", 0),
- TEST ("abcd", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]", -1),
+ TEST ("abcd", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 0),
TEST ("", "last test", "last test", 0)
};
@@ -413,6 +474,15 @@
TEST ("\0a", "abefdcc\0a", "abefdcc\0a", 0),
TEST ("[EMAIL PROTECTED]", "abefdcc\0a", "abefdcc\0a", 0),
+ TEST ("", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]",
0),
+ TEST ("", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]",
0),
+
TEST ("abc", "[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 0),
TEST ("", 0, "", 0),
@@ -448,7 +518,12 @@
TEST ("", '\0', "\0"),
TEST ("a", '\0', "\0"),
TEST ("\0\0", 'x', "x"),
+
+ TEST ("[EMAIL PROTECTED]", 'a', "a"),
+ TEST ("[EMAIL PROTECTED]", '\0', "\0"),
+ TEST ("[EMAIL PROTECTED]", 't', "t"),
TEST ("[EMAIL PROTECTED]", 'x', "x"),
+
TEST ("", 't', "t")
};
@@ -456,107 +531,89 @@
/**************************************************************************/
template <class charT, class Traits, class Allocator, class Iterator>
-void test_ctor_range (const charT* warg,
- std::size_t warg_len,
- std::size_t res_len,
- Traits*, Allocator*,
- const Iterator &it,
- const StringTestCase &tcase)
+void test_ctor_range (const StringTestCaseData<charT> &tdata,
+ Traits*, Allocator*, const Iterator &it)
{
typedef std::basic_string <charT, Traits, Allocator> String;
typedef typename String::iterator StringIter;
+ const StringTestCase &tcase = tdata.tcase_;
+
const char* const itname =
tcase.arg ? type_name (it, (charT*)0) : "basic_string::iterator";
- /*const*/ String s_arg (warg, warg_len);
+ // construct the string argument
+ /* const */ String arg (tdata.arg_, tdata.arglen_);
+
+ std::size_t off1 = std::size_t (tcase.off) < tdata.arglen_ ?
+ std::size_t (tcase.off) : tdata.arglen_;
- std::size_t off_last = tcase.off + tcase.size;
+ std::size_t ext1 = off1 + tcase.size < tdata.arglen_ ?
+ std::size_t (tcase.size) : tdata.arglen_ - off1;
- const StringIter it_first (std::size_t (tcase.off) >= s_arg.size () ?
- s_arg.end () : s_arg.begin () + tcase.off);
- const StringIter it_last (std::size_t (off_last) >= s_arg.size () ?
- s_arg.end () : s_arg.begin () + off_last);
+ // create a pair of iterators into the string object being modified
+ const StringIter it_first (arg.begin () + off1);
+ const StringIter it_last (it_first + ext1);
- const String s_str (it_first, it_last);
+ const String str (it_first, it_last);
- const std::size_t match =
- rw_match (tcase.res, s_str.c_str(), tcase.nres);
+ // detrmine whether the produced sequence matches the exepceted result
+ const std::size_t match = rw_match (tcase.res, str.data (), tcase.nres);
- rw_assert (match == res_len, 0, tcase.line,
+ rw_assert (match == tdata.reslen_, 0, tcase.line,
"line %d. %{$FUNCALL} expected %{#*s}, got %{/*.*Gs}, "
"difference at offset %zu for %s",
__LINE__, int (tcase.nres), tcase.res,
- int (sizeof (charT)), int (s_str.size ()), s_str.c_str (),
+ int (sizeof (charT)), int (str.size ()), str.c_str (),
match, itname);
}
/**************************************************************************/
template <class charT, class Traits, class Allocator>
-void test_ctor_range (const charT* warg,
- std::size_t warg_len,
- std::size_t res_len,
- Traits*, Allocator*,
- const StringTestCase &tcase)
+void test_ctor_range (const StringTestCaseData<charT> &tdata,
+ Traits*, Allocator*)
{
- if (tcase.bthrow) // this method doesn't throw
+ if (tdata.tcase_.bthrow) {
return;
+ }
- test_ctor_range (warg, warg_len, res_len, (Traits*)0, (Allocator*)0,
- InputIter<charT>(0, 0, 0), tcase);
+ test_ctor_range (tdata, (Traits*)0, (Allocator*)0,
+ InputIter<charT>(0, 0, 0));
- test_ctor_range (warg, warg_len, res_len, (Traits*)0, (Allocator*)0,
- ConstFwdIter<charT>(0, 0, 0), tcase);
+ test_ctor_range (tdata, (Traits*)0, (Allocator*)0,
+ ConstFwdIter<charT>(0, 0, 0));
- test_ctor_range (warg, warg_len, res_len, (Traits*)0, (Allocator*)0,
- ConstBidirIter<charT>(0, 0, 0), tcase);
+ test_ctor_range (tdata, (Traits*)0, (Allocator*)0,
+ ConstBidirIter<charT>(0, 0, 0));
- test_ctor_range (warg, warg_len, res_len, (Traits*)0, (Allocator*)0,
- ConstRandomAccessIter<charT>(0, 0, 0), tcase);
+ test_ctor_range (tdata, (Traits*)0, (Allocator*)0,
+ ConstRandomAccessIter<charT>(0, 0, 0));
}
/**************************************************************************/
template <class charT, class Traits, class Allocator>
-void test_ctor (charT, Traits*, Allocator*,
- const StringFunc &func,
- const StringTestCase &tcase)
+void test_ctor (charT*, Traits*, Allocator*,
+ const StringTestCaseData<charT> &tdata)
{
typedef std::basic_string <charT, Traits, Allocator> String;
- static const std::size_t BUFSIZE = 256;
-
- static charT warg_buf [BUFSIZE];
- std::size_t arg_len = sizeof warg_buf / sizeof *warg_buf;
- charT* warg = rw_expand (warg_buf, tcase.arg, tcase.arg_len, &arg_len);
-
- static charT wres_buf [BUFSIZE];
- std::size_t res_len = sizeof wres_buf / sizeof *wres_buf;
- charT* wres = rw_expand (wres_buf, tcase.res, tcase.nres, &res_len);
+ const StringFunc &func = tdata.func_;
+ const StringTestCase &tcase = tdata.tcase_;
if (Ctor (range) == func.which_) {
- test_ctor_range (warg, arg_len, res_len,
- (Traits*)0, (Allocator*)0, tcase);
-
- if (warg != warg_buf)
- delete[] warg;
-
- if (wres != wres_buf)
- delete[] wres;
-
+ // special processing for the ctor() template member
+ // function to exercise all iterator categories
+ test_ctor_range (tdata, (Traits*)0, (Allocator*)0);
return;
}
- // construct the string object to be modified
- // and the (possibly unused) argument string
- const String arg (warg, arg_len, Allocator ());
- if (warg != warg_buf)
- delete[] warg;
-
- warg = 0;
+ // construct the argument string
+ const String arg (tdata.arg_, tdata.arglen_);
// offset and extent function arguments
+ // offset and extent function arguments
const std::size_t arg_off = std::size_t (tcase.off);
const std::size_t arg_size = std::size_t (tcase.size);
@@ -564,6 +621,7 @@
const charT* const arg_ptr = arg.c_str ();
const String& arg_str = arg;
const charT arg_val = make_char (char (tcase.val), (charT*)0);
+ const Allocator arg_alc;
// (name of) expected and caught exception
const char* expected = 0;
@@ -578,12 +636,8 @@
#else // if defined (_RWSTD_NO_EXCEPTIONS)
- if (tcase.bthrow) {
- if (wres != wres_buf)
- delete[] wres;
-
+ if (tcase.bthrow)
return;
- }
#endif // _RWSTD_NO_EXCEPTIONS
@@ -601,7 +655,7 @@
break;
case Ctor (alloc):
- ret_ptr = new String (Allocator ());
+ ret_ptr = new String (arg_alc);
break;
case Ctor (cptr):
@@ -609,7 +663,7 @@
break;
case Ctor (cptr_alloc):
- ret_ptr = new String (arg_ptr, Allocator ());
+ ret_ptr = new String (arg_ptr, arg_alc);
break;
case Ctor (cstr):
@@ -621,7 +675,7 @@
break;
case Ctor (cptr_size_alloc):
- ret_ptr = new String (arg_ptr, arg_size, Allocator ());
+ ret_ptr = new String (arg_ptr, arg_size, arg_alc);
break;
case Ctor (cstr_size):
@@ -633,7 +687,7 @@
break;
case Ctor (cstr_size_size_alloc):
- ret_ptr = new String (arg_str, arg_off, arg_size, Allocator ());
+ ret_ptr = new String (arg_str, arg_off, arg_size, arg_alc);
break;
case Ctor (size_val):
@@ -641,27 +695,31 @@
break;
case Ctor (size_val_alloc):
- ret_ptr = new String (tcase.size, arg_val, Allocator ());
+ ret_ptr = new String (tcase.size, arg_val, arg_alc);
break;
default:
RW_ASSERT (!"logic error: unknown constructor overload");
}
+ // for convenience
+ static const int cwidth = sizeof (charT);
+
// verify that returned pointer is valid
rw_assert (0 != ret_ptr, 0, tcase.line,
- "line %d. %{$FUNCALL} expected %{#*s}, got null",
- __LINE__, int (res_len), tcase.res);
+ "line %d. %{$FUNCALL} expected %{/*.*Gs}, got null",
+ __LINE__, cwidth, int (tdata.reslen_), tdata.res_);
if (0 != ret_ptr) {
- // verify the length of the resulting string
- rw_assert (res_len == ret_ptr->size (), 0, tcase.line,
- "line %d. %{$FUNCALL} expected %{#*s} with length "
- "%zu, got %{/*.*Gs} with length %zu",
- __LINE__, int (res_len), tcase.res,
- res_len, int (sizeof (charT)),
- int (ret_ptr->size ()), ret_ptr->c_str (),
- ret_ptr->size ());
+
+ // verfiy that the length of the resulting string
+ rw_assert (tdata.reslen_ == ret_ptr->size (), 0, tcase.line,
+ "line %d. %{$FUNCALL} expected %{/*.*Gs} with "
+ "length %zu, got %{/*.*Gs} with length %zu",
+ __LINE__,
+ cwidth, int (tdata.reslen_), tdata.res_,
+ tdata.reslen_, cwidth, int (ret_ptr->size ()),
+ ret_ptr->data (), ret_ptr->size ());
if (Ctor (void) != func.which_) {
// verify the capacity of the resulting string
@@ -672,20 +730,20 @@
ret_ptr->capacity (), ret_ptr->size ());
}
- if (res_len == ret_ptr->size ()) {
+ if (tdata.reslen_ == ret_ptr->size ()) {
// if the result length matches the expected length
// (and only then), also verify that the modified
// string matches the expected result
const std::size_t match =
rw_match (tcase.res, ret_ptr->c_str (), tcase.nres);
- rw_assert (match == res_len, 0, tcase.line,
+ rw_assert (match == tdata.reslen_, 0, tcase.line,
"line %d. %{$FUNCALL} expected %{/*.*Gs}, "
"got %{/*.*Gs}, difference at offset %zu",
- __LINE__, int (sizeof (charT)), int (res_len),
- wres, int (sizeof (charT)),
- int (ret_ptr->size ()), ret_ptr->c_str (),
- match);
+ __LINE__,
+ cwidth, int (tdata.reslen_), tdata.res_,
+ cwidth, int (ret_ptr->size ()),
+ ret_ptr->data (), match);
}
delete ret_ptr;
@@ -742,49 +800,24 @@
rw_assert (nblocks == expect_blocks, 0, tcase.line,
"line %d. %{$FUNCALL} allocated %td bytes in %td blocks",
__LINE__, nbytes, expect_blocks);
-
- if (wres != wres_buf)
- delete[] wres;
}
/**************************************************************************/
template <class charT, class Traits, class Allocator>
-void test_op_set (charT, Traits*, Allocator*,
- const StringFunc &func,
- const StringTestCase &tcase)
+void test_op_set (charT*, Traits*, Allocator*,
+ const StringTestCaseData<charT> &tdata)
{
typedef std::basic_string <charT, Traits, Allocator> String;
- typedef typename UserTraits<charT>::MemFun UTMemFun;
-
- static const std::size_t BUFSIZE = 256;
-
- static charT wstr_buf [BUFSIZE];
- static charT warg_buf [BUFSIZE];
+ typedef typename UserTraits<charT>::MemFun TraitsFunc;
- std::size_t str_len = sizeof wstr_buf / sizeof *wstr_buf;
- std::size_t arg_len = sizeof warg_buf / sizeof *warg_buf;
-
- charT* wstr = rw_expand (wstr_buf, tcase.str, tcase.str_len, &str_len);
- charT* warg = rw_expand (warg_buf, tcase.arg, tcase.arg_len, &arg_len);
+ const StringFunc &func = tdata.func_;
+ const StringTestCase &tcase = tdata.tcase_;
// construct the string object to be modified
// and the (possibly unused) argument string
- /* const */ String str (wstr, str_len, Allocator ());
- const String arg (warg, arg_len, Allocator ());
-
- if (wstr != wstr_buf)
- delete[] wstr;
-
- if (warg != warg_buf)
- delete[] warg;
-
- wstr = 0;
- warg = 0;
-
- static charT wres_buf [BUFSIZE];
- std::size_t res_len = sizeof wres_buf / sizeof *wres_buf;
- charT* wres = rw_expand (wres_buf, tcase.res, tcase.nres, &res_len);
+ /* const */ String str (tdata.str_, tdata.strlen_, Allocator ());
+ const String arg (tdata.arg_, tdata.arglen_, Allocator ());
// save the state of the string object before the call
// to detect wxception safety violations (changes to
@@ -792,7 +825,7 @@
const StringState str_state (rw_get_string_state (str));
// string function argument
- const charT* const arg_ptr = tcase.arg ? arg.c_str () : str.c_str ();
+ const charT* const arg_ptr = tcase.arg ? arg.data () : str.data ();
const String& arg_str = tcase.arg ? arg : str;
const charT arg_val = make_char (char (tcase.val), (charT*)0);
@@ -802,15 +835,16 @@
rw_get_call_counters ((Traits*)0, (charT*)0) : 0;
if (rg_calls)
- total_length_calls = rg_calls [UTMemFun::length];
+ total_length_calls = rg_calls [TraitsFunc::length];
rwt_free_store* const pst = rwt_get_free_store (0);
+ SharedAlloc* const pal = SharedAlloc::instance ();
// iterate for`throw_after' starting at the next call to operator new,
// forcing each call to throw an exception, until the function finally
// succeeds (i.e, no exception is thrown)
- std::size_t throw_after;
- for (throw_after = 0; ; ++throw_after) {
+ std::size_t throw_count;
+ for (throw_count = 0; ; ++throw_count) {
// (name of) expected and caught exception
const char* expected = 0;
@@ -818,24 +852,29 @@
#ifndef _RWSTD_NO_EXCEPTIONS
- if (-1 == tcase.bthrow) {
+ if (0 == tcase.bthrow) {
+ // by default excercise the exception safety of the function
+ // by iteratively inducing an exception at each call to operator
+ // new or Allocator::allocate() until the call succeeds
expected = exceptions [3]; // bad_alloc
- *pst->throw_at_calls_ [0] = pst->new_calls_ [0] + throw_after + 1;
+ *pst->throw_at_calls_ [0] = pst->new_calls_ [0] + throw_count + 1;
+ pal->throw_at_calls_ [pal->m_allocate] =
+ pal->throw_at_calls_ [pal->m_allocate] + throw_count + 1;
+ }
+ else {
+ // exceptions disabled for this test case
}
#else // if defined (_RWSTD_NO_EXCEPTIONS)
if (tcase.bthrow) {
- if (wres != wres_buf)
- delete[] wres;
-
return;
}
#endif // _RWSTD_NO_EXCEPTIONS
// start checking for memory leaks
- rwt_check_leaks (0, 0);
+ rw_check_leaks (str.get_allocator ());
try {
switch (func.which_) {
@@ -856,27 +895,31 @@
RW_ASSERT (!"logic error: unknown operator= overload");
}
- // verify the length of the resulting string
- rw_assert (res_len == str.size (), 0, tcase.line,
- "line %d. %{$FUNCALL} expected %{#*s} with length "
- "%zu, got %{/*.*Gs} with length %zu",
- __LINE__, int (res_len), tcase.res,
- res_len, int (sizeof (charT)),
- int (str.size ()), str.c_str (), str.size ());
+ // for convenience
+ static const int cwidth = sizeof (charT);
- if (res_len == str.size ()) {
+ // verfiy that the length of the resulting string
+ rw_assert (tdata.reslen_ == str.size (), 0, tcase.line,
+ "line %d. %{$FUNCALL} expected %{/*.*Gs} with "
+ "length %zu, got %{/*.*Gs} with length %zu",
+ __LINE__,
+ cwidth, int (tdata.reslen_), tdata.res_,
+ tdata.reslen_, cwidth, int (str.size ()), str.data (),
+ str.size ());
+
+ if (tdata.reslen_ == str.size ()) {
// if the result length matches the expected length
// (and only then), also verify that the modified
// string matches the expected result
const std::size_t match =
rw_match (tcase.res, str.c_str (), tcase.nres);
- rw_assert (match == res_len, 0, tcase.line,
+ rw_assert (match == tdata.reslen_, 0, tcase.line,
"line %d. %{$FUNCALL} expected %{/*.*Gs}, "
"got %{/*.*Gs}, difference at offset %zu",
- __LINE__, int (sizeof (charT)), int (res_len),
- wres, int (sizeof (charT)),
- int (str.size ()), str.c_str (), match);
+ __LINE__,
+ cwidth, int (tdata.reslen_), tdata.res_,
+ cwidth, int (str.size ()),str.data (), match);
}
// verify that Traits::length was used
@@ -891,7 +934,7 @@
catch (const std::bad_alloc &ex) {
caught = exceptions [3];
- rw_assert (-1 == tcase.bthrow, 0, tcase.line,
+ rw_assert (0 == tcase.bthrow, 0, tcase.line,
"line %d. %{$FUNCALL} %{?}expected %s,%{:}"
"unexpectedly%{;} caught std::%s(%#s)",
__LINE__, 0 != expected, expected, caught, ex.what ());
@@ -913,30 +956,25 @@
#endif // _RWSTD_NO_EXCEPTIONS
- /* const */ std::size_t nbytes;
- const std::size_t nblocks = rwt_check_leaks (&nbytes, 0);
-
// FIXME: verify the number of blocks the function call
// is expected to allocate and detect any memory leaks
- const std::size_t expect_blocks = nblocks;
-
- rw_assert (nblocks == expect_blocks, 0, tcase.line,
- "line %d. %{$FUNCALL} allocated %td bytes in %td blocks",
- __LINE__, nbytes, expect_blocks);
+ rw_check_leaks (str.get_allocator (), tcase.line,
+ std::size_t (-1), std::size_t (-1));
if (caught) {
// verify that an exception thrown during allocation
// didn't cause a change in the state of the object
str_state.assert_equal (rw_get_string_state (str),
__LINE__, tcase.line, caught);
- if (-1 == tcase.bthrow) {
+
+ if (0 == tcase.bthrow) {
// allow this call to operator new to succeed and try
// to make the next one to fail during the next call
// to the same function again
continue;
}
}
- else if (-1 != tcase.bthrow) {
+ else if (0 < tcase.bthrow) {
rw_assert (caught == expected, 0, tcase.line,
"line %d. %{$FUNCALL} %{?}expected %s, caught %s"
"%{:}unexpectedly caught %s%{;}",
@@ -946,40 +984,51 @@
break;
}
+ std::size_t expect_throws = 0;
+
+ if (OpSet (cstr) != func.which_) {
+
#ifndef _RWSTD_NO_REPLACEABLE_NEW_DELETE
- // verify that if exceptions are enabled and when capacity changes
- // at least one exception is thrown
- rw_assert ( *pst->throw_at_calls_ [0] == std::size_t (-1)
- || throw_after,
- 0, tcase.line,
- "line %d: %{$FUNCALL}: failed to throw an expected exception",
- __LINE__);
+ // verify that if exceptions are enabled and when capacity changes
+ // at least one exception is thrown
+ expect_throws = str_state.capacity_ < str.capacity ();
+
+#else // if defined (_RWSTD_NO_REPLACEABLE_NEW_DELETE)
+
+ expect_throws = StringIds::UserAlloc == func.alloc_id_ ?
+ str_state.capacity_ < str.capacity () : 0;
#endif // _RWSTD_NO_REPLACEABLE_NEW_DELETE
- *pst->throw_at_calls_ [0] = std::size_t (-1);
+ }
- if (wres != wres_buf)
- delete[] wres;
+ rw_assert (expect_throws == throw_count, 0, tcase.line,
+ "line %d: %{$FUNCALL}: expected exactly 1 %s exception "
+ "while changing capacity from %zu to %zu, got %zu",
+ __LINE__, exceptions [3],
+ str_state.capacity_, str.capacity (), throw_count);
+
+ // disable bad_alloc exceptions
+ *pst->throw_at_calls_ [0] = 0;
+ pal->throw_at_calls_ [pal->m_allocate] = 0;
}
/**************************************************************************/
template <class charT, class Traits, class Allocator>
-void test_cons (charT, Traits*, Allocator*,
- const StringFunc &func,
- const StringTestCase &tcase)
+void test_cons (charT*, Traits*, Allocator*,
+ const StringTestCaseData<charT> &tdata)
{
- if (StringIds::fid_op_set == (func.which_ & StringIds::fid_mask))
- test_op_set (charT (), (Traits*)0, (Allocator*)0, func, tcase);
+ if (StringIds::fid_op_set == (tdata.func_.which_ & StringIds::fid_mask))
+ test_op_set ((charT*)0, (Traits*)0, (Allocator*)0, tdata);
else
- test_ctor (charT (), (Traits*)0, (Allocator*)0, func, tcase);
+ test_ctor ((charT*)0, (Traits*)0, (Allocator*)0, tdata);
}
/**************************************************************************/
-DEFINE_STRING_TEST_DISPATCH (test_cons);
+DEFINE_STRING_TEST_FUNCTIONS (test_cons);
int main (int argc, char** argv)
{
@@ -1016,7 +1065,10 @@
const std::size_t test_count = sizeof tests / sizeof *tests;
- return rw_run_string_test (argc, argv, __FILE__,
- "lib.string.cons",
- test_cons, tests, test_count);
+ const int status =
+ rw_run_string_test (argc, argv, __FILE__,
+ "lib.string.cons",
+ test_cons_func_array, tests, test_count);
+
+ return status;
}
Modified: incubator/stdcxx/trunk/tests/strings/21.string.insert.cpp
URL:
http://svn.apache.org/viewvc/incubator/stdcxx/trunk/tests/strings/21.string.insert.cpp?rev=410782&r1=410781&r2=410782&view=diff
==============================================================================
--- incubator/stdcxx/trunk/tests/strings/21.string.insert.cpp (original)
+++ incubator/stdcxx/trunk/tests/strings/21.string.insert.cpp Thu Jun 1
00:57:51 2006
@@ -109,6 +109,16 @@
TEST ("[EMAIL PROTECTED]", 2, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]@4094", 0),
TEST ("[EMAIL PROTECTED]", 2, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]@100", 0),
+ TEST ("[EMAIL PROTECTED]", 1, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 128, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 1, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 539, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 539, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 207, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+
TEST ("\0", 2, "", "", 1),
TEST ("a", 2, "", "", 1),
TEST ("[EMAIL PROTECTED]", 4106, "", "", 1),
@@ -178,6 +188,16 @@
TEST ("[EMAIL PROTECTED]", 2, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]@4094", 0),
TEST ("[EMAIL PROTECTED]", 2, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]@100", 0),
+ TEST ("[EMAIL PROTECTED]", 1, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 128, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 1, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 539, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 539, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 207, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+
TEST ("\0", 2, "", "", 1),
TEST ("a", 2, "", "", 1),
TEST ("[EMAIL PROTECTED]", 4106, "", "", 1),
@@ -266,16 +286,29 @@
TEST ("[EMAIL PROTECTED]", 999, "[EMAIL PROTECTED]", 2, 1000, "[EMAIL
PROTECTED]@999a", 0),
TEST ("[EMAIL PROTECTED]", 2, "[EMAIL PROTECTED]", 999, 1001, "[EMAIL
PROTECTED]", 0),
- TEST ("\0", 2, "", 0, 0, "", 1),
- TEST ("", 0, "\0", 2, 0, "", 2),
+ TEST ("[EMAIL PROTECTED]", 1, "[EMAIL PROTECTED]", 0, 118,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, "[EMAIL PROTECTED]", 50, 79,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 207, "[EMAIL PROTECTED]", 0, 127,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 128, "[EMAIL PROTECTED]", 10, 127,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 334, "[EMAIL PROTECTED]", 2, 206,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, "[EMAIL PROTECTED]", 3, 333,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 538, "[EMAIL PROTECTED]", 0, 873,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 540, "[EMAIL PROTECTED]", 1, 539,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, "[EMAIL PROTECTED]", 0, 1412, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 1411, "[EMAIL PROTECTED]", 4, 2284, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 872, "[EMAIL PROTECTED]", 128, 2284, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, "[EMAIL PROTECTED]", 0, 2284, "[EMAIL
PROTECTED]", 0),
+
+ TEST ("\0", 2, "", 0, 0, "", 1),
+ TEST ("", 0, "\0", 2, 0, "", 2),
- TEST ("a", 2, "", 0, 0, "", 1),
- TEST ("", 0, "a", 2, 0, "", 2),
+ TEST ("a", 2, "", 0, 0, "", 1),
+ TEST ("", 0, "a", 2, 0, "", 2),
- TEST ("[EMAIL PROTECTED]", 4106, "", 0, 0, "", 1),
- TEST ("", 0, "[EMAIL PROTECTED]", 4106, 0, "", 2),
+ TEST ("[EMAIL PROTECTED]", 4106, "", 0, 0, "", 1),
+ TEST ("", 0, "[EMAIL PROTECTED]", 4106, 0, "", 2),
- TEST ("last", 4, "test", 0, 4, "lasttest", 0)
+ TEST ("last", 4, "test", 0, 4, "lasttest", 0)
};
/**************************************************************************/
@@ -344,8 +377,23 @@
TEST ("[EMAIL PROTECTED]", 4095, "ab", 1, "[EMAIL PROTECTED]",
0),
TEST ("[EMAIL PROTECTED]", 4094, "\0\0", 2, "[EMAIL PROTECTED]",
0),
- TEST ("", 0, "[EMAIL PROTECTED]", 4096, "[EMAIL PROTECTED]",
0),
- TEST ("[EMAIL PROTECTED]", 0, "", 0, "[EMAIL PROTECTED]",
0),
+ TEST ("", 0, "[EMAIL PROTECTED]", 4096, "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", 0, "", 0, "[EMAIL PROTECTED]",
0),
+
+ TEST ("", 0, "[EMAIL PROTECTED]", 540, "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", 1, "[EMAIL PROTECTED]", 118, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 128, "[EMAIL PROTECTED]", 79, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, "[EMAIL PROTECTED]", 127, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 207, "[EMAIL PROTECTED]", 127, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 128, "[EMAIL PROTECTED]", 206, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 540, "[EMAIL PROTECTED]", 333, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, "[EMAIL PROTECTED]", 873, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 5, "[EMAIL PROTECTED]", 539, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, "[EMAIL PROTECTED]", 1412, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 1411, "[EMAIL PROTECTED]", 2284, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 873, "[EMAIL PROTECTED]", 2284, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, "[EMAIL PROTECTED]", 2284, "[EMAIL
PROTECTED]", 0),
+ TEST ("", 0, "[EMAIL PROTECTED]", 3696, "[EMAIL PROTECTED]",
0),
TEST ("\0", 2, "", 0, "", 1),
TEST ("a", 2, "", 0, "", 1),
@@ -420,6 +468,16 @@
TEST ("[EMAIL PROTECTED]", 1, 2, 'a', "[EMAIL PROTECTED]", 0),
TEST ("[EMAIL PROTECTED]", 1, 1, '\0', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 1, 'x', "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", 128, 7, 'x', "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", 331, 3, 'x', "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", 0, 1, 'x', "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", 0, 873, 'x', "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", 873, 1411, 'x', "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", 128, 1, 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 1, 'x', "[EMAIL PROTECTED]",
0),
+ TEST ("", 0, 3695, 'x', "[EMAIL PROTECTED]", 0),
+
TEST ("a", 0, 4095, 'x', "[EMAIL PROTECTED]", 0),
TEST ("[EMAIL PROTECTED]", 0, 2047, 'b', "[EMAIL PROTECTED]@4096", 0),
TEST ("[EMAIL PROTECTED]", 2047, 2048, 'x', "[EMAIL PROTECTED]", 0),
@@ -473,6 +531,15 @@
TEST ("[EMAIL PROTECTED]", 0, 'a', "[EMAIL PROTECTED]", 0),
TEST ("[EMAIL PROTECTED]", 1, 'a', "[EMAIL PROTECTED]", 0),
TEST ("[EMAIL PROTECTED]", 1, '\0', "[EMAIL PROTECTED]", 0),
+
+ TEST ("[EMAIL PROTECTED]", 0, 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 1, 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 333, 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 128, 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 10, 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 3694, 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 538, 'x', "[EMAIL PROTECTED]", 0),
TEST ("last", 4, 't', "lastt", 0)
};
Modified: incubator/stdcxx/trunk/tests/strings/21.string.op.plus.equal.cpp
URL:
http://svn.apache.org/viewvc/incubator/stdcxx/trunk/tests/strings/21.string.op.plus.equal.cpp?rev=410782&r1=410781&r2=410782&view=diff
==============================================================================
--- incubator/stdcxx/trunk/tests/strings/21.string.op.plus.equal.cpp (original)
+++ incubator/stdcxx/trunk/tests/strings/21.string.op.plus.equal.cpp Thu Jun 1
00:57:51 2006
@@ -95,6 +95,16 @@
TEST ("[EMAIL PROTECTED]", "", "[EMAIL PROTECTED]",
0),
TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]@2048", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+
TEST ("", 0, "", 0),
TEST ("abc", 0, "abcabc", 0),
TEST ("a\0\0bc", 0, "a\0\0bca", 0),
@@ -154,6 +164,16 @@
TEST ("[EMAIL PROTECTED]", "", "[EMAIL PROTECTED]",
0),
TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]@2048", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+
TEST ("", 0, "", 0),
TEST ("abc", 0, "abcabc", 0),
TEST ("a\0\0bc", 0, "a\0\0bca\0\0bc", 0),
@@ -200,7 +220,16 @@
TEST ("\0ab\0\0c", '\0', "\0ab\0\0c\0", 0),
TEST ("a\0bc\0\0", 'a', "a\0bc\0\0a", 0),
- TEST ("last", 't', "lastt", 0)
+ TEST ("[EMAIL PROTECTED]", 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 'x', "[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 'x', "[EMAIL PROTECTED]", 0),
+
+ TEST ("last", 't', "lastt", 0)
};
/**************************************************************************/
Modified: incubator/stdcxx/trunk/tests/strings/21.string.replace.cpp
URL:
http://svn.apache.org/viewvc/incubator/stdcxx/trunk/tests/strings/21.string.replace.cpp?rev=410782&r1=410781&r2=410782&view=diff
==============================================================================
--- incubator/stdcxx/trunk/tests/strings/21.string.replace.cpp (original)
+++ incubator/stdcxx/trunk/tests/strings/21.string.replace.cpp Thu Jun 1
00:57:51 2006
@@ -122,6 +122,16 @@
TEST ("[EMAIL PROTECTED]", 0, 4094, "ab", "abxx", 0),
TEST ("[EMAIL PROTECTED]", 1, 4093, "", "xxx", 0),
+ TEST ("[EMAIL PROTECTED]", 1, 10, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 128, 0, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 0, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 1, 1, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 539, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 539, 0, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 2283, "", "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", 207, 1, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 207, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+
TEST ("", 0, 0, "[EMAIL PROTECTED]", "[EMAIL PROTECTED]",
0),
TEST ("a", 0, 1, "[EMAIL PROTECTED]", "[EMAIL PROTECTED]",
0),
TEST ("[EMAIL PROTECTED]", 0, 4095, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
@@ -228,6 +238,16 @@
TEST ("[EMAIL PROTECTED]", 1, 4093, "", "xxx", 0),
TEST ("[EMAIL PROTECTED]", 1, 4092, "\0\0", "x\0\0xxx", 0),
+ TEST ("[EMAIL PROTECTED]", 1, 10, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 128, 0, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 0, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 1, 1, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 539, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 539, 0, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 2283, "", "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", 207, 1, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 207, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
+
TEST ("", 0, 0, "[EMAIL PROTECTED]", "[EMAIL PROTECTED]",
0),
TEST ("a", 0, 1, "[EMAIL PROTECTED]", "[EMAIL PROTECTED]",
0),
TEST ("[EMAIL PROTECTED]", 0, 4095, "[EMAIL PROTECTED]", "[EMAIL
PROTECTED]", 0),
@@ -324,6 +344,20 @@
TEST ("[EMAIL PROTECTED]", 1, 4093, "", 0, "xxx", 0),
TEST ("[EMAIL PROTECTED]", 1, 4092, "\0\0", 2, "x\0\0xxx", 0),
+ TEST ("", 0, 0, "[EMAIL PROTECTED]", 540, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 1, 10, "[EMAIL PROTECTED]", 118,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 128, 0, "[EMAIL PROTECTED]", 79,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 0, "[EMAIL PROTECTED]", 127,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 207, 207, "[EMAIL PROTECTED]", 127,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 207, "[EMAIL PROTECTED]", 540,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 539, "[EMAIL PROTECTED]", 873,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 5, 5, "[EMAIL PROTECTED]", 539,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 0, "[EMAIL PROTECTED]", 1412, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 1411, 0, "[EMAIL PROTECTED]", 2284, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 873, 538, "[EMAIL PROTECTED]", 2822, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 0, "[EMAIL PROTECTED]", 2284, "[EMAIL
PROTECTED]", 0),
+ TEST ("", 0, 0, "[EMAIL PROTECTED]", 3696, "[EMAIL
PROTECTED]", 0),
+
TEST ("a", 0, 1, "[EMAIL PROTECTED]", 4095, "[EMAIL
PROTECTED]", 0),
TEST ("[EMAIL PROTECTED]", 0, 4095, "[EMAIL PROTECTED]", 4095, "[EMAIL
PROTECTED]", 0),
TEST ("[EMAIL PROTECTED]", 0, 2047, "[EMAIL PROTECTED]", 2047, "[EMAIL
PROTECTED]", 0),
@@ -505,6 +539,20 @@
TEST ("[EMAIL PROTECTED]", 0, 4095, "[EMAIL PROTECTED]", 0, 4095,
"[EMAIL PROTECTED]", 0),
TEST ("[EMAIL PROTECTED]", 0, 2047, "[EMAIL PROTECTED]", 0, 2047,
"[EMAIL PROTECTED]", 0),
+ TEST ("", 0, 0, "[EMAIL PROTECTED]", 0, 207, "[EMAIL
PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 1, 10, "[EMAIL PROTECTED]", 0, 118,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 0, "[EMAIL PROTECTED]", 50, 79,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 207, 0, "[EMAIL PROTECTED]", 0, 127,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 128, 1, "[EMAIL PROTECTED]", 10, 127,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 334, 1, "[EMAIL PROTECTED]", 2, 206,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 0, "[EMAIL PROTECTED]", 3, 333,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 334, "[EMAIL PROTECTED]", 0, 873,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 873, "[EMAIL PROTECTED]", 1, 540,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 0, "[EMAIL PROTECTED]", 0, 1412,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 1411, 0, "[EMAIL PROTECTED]", 4, 2284,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 540,333, "[EMAIL PROTECTED]",3695, 0,
"[EMAIL PROTECTED]", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 1412, "[EMAIL PROTECTED]", 0,3695,
"[EMAIL PROTECTED]", 0),
+
TEST ("[EMAIL PROTECTED]", 2047, 2048, "[EMAIL PROTECTED]", 0, 2048,
"[EMAIL PROTECTED]", 0),
TEST ("\0", 2, 0, "", 0, 0, "\0", 1),
@@ -636,11 +684,21 @@
TEST ("a\0b\0c\0", 6, 0, 2, '\0', "a\0b\0c\0\0\0", 0),
TEST ("\0ab\0\0c", 5, 0, 1, '\0', "\0ab\0\0\0c", 0),
- TEST ("[EMAIL PROTECTED]", 0, 4095, 2, 'a', "aax", 0),
- TEST ("[EMAIL PROTECTED]", 1, 4094, 2, 'a', "xaax", 0),
- TEST ("[EMAIL PROTECTED]", 0, 4094, 2, 'a', "aaxx", 0),
- TEST ("[EMAIL PROTECTED]", 1, 4093, 0, 'a', "xxx", 0),
- TEST ("[EMAIL PROTECTED]", 1, 4092, 1, '\0', "x\0xxx", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 4095, 2, 'a', "aax", 0),
+ TEST ("[EMAIL PROTECTED]", 1, 4094, 2, 'a', "xaax", 0),
+ TEST ("[EMAIL PROTECTED]", 0, 4094, 2, 'a', "aaxx", 0),
+ TEST ("[EMAIL PROTECTED]", 1, 4093, 0, 'a', "xxx", 0),
+ TEST ("[EMAIL PROTECTED]", 1, 4092, 1, '\0', "x\0xxx", 0),
+
+ TEST ("[EMAIL PROTECTED]", 0, 0, 1, 'x', "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", 128, 7, 14, 'x', "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", 331, 1, 3, 'x', "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", 539, 0, 1, 'x', "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", 0, 0,873, 'x', "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", 873, 0, 1411, 'x', "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", 128, 1, 2, 'x', "[EMAIL PROTECTED]",
0),
+ TEST ("[EMAIL PROTECTED]", 537, 2, 3, 'a', "[EMAIL PROTECTED]", 0),
+ TEST ("", 0, 0, 3695, 'x', "[EMAIL PROTECTED]", 0),
TEST ("a", 0, 1, 4095, 'x', "[EMAIL PROTECTED]", 0),
TEST ("[EMAIL PROTECTED]", 0, 4095, 4095, 'a', "[EMAIL PROTECTED]",
0),