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),


Reply via email to