You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stdcxx.apache.org by se...@apache.org on 2006/03/21 03:42:57 UTC

svn commit: r387383 - /incubator/stdcxx/trunk/tests/strings/21.string.replace.cpp

Author: sebor
Date: Mon Mar 20 18:42:54 2006
New Revision: 387383

URL: http://svn.apache.org/viewcvs?rev=387383&view=rev
Log:
2006-03-20  Martin Sebor  <se...@roguewave.com>

	* 21.string.replace.cpp (LSTR, LLEN, LPAR): New convenience macros.
	(TestCase::str, src, res, it_res): Added const-qualification to avoid
	gcc warnings.
	(test_replace): Added const-qualification wherever appropriate.

Modified:
    incubator/stdcxx/trunk/tests/strings/21.string.replace.cpp

Modified: incubator/stdcxx/trunk/tests/strings/21.string.replace.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/tests/strings/21.string.replace.cpp?rev=387383&r1=387382&r2=387383&view=diff
==============================================================================
--- incubator/stdcxx/trunk/tests/strings/21.string.replace.cpp (original)
+++ incubator/stdcxx/trunk/tests/strings/21.string.replace.cpp Mon Mar 20 18:42:54 2006
@@ -1,6 +1,6 @@
 /***************************************************************************
  *
- * 21.string.replace.cpp - string test exercising [lib.string::replace]
+ * 21.string.replace.cpp - string test exercising lib.string.replace
  *
  * $Id$ 
  *
@@ -58,19 +58,24 @@
 
 /**************************************************************************/
 
-static const int long_string_len = 4096;
+// for convenience and brevity
+#define LSTR  long_string
+#define LLEN  long_string_len
+#define LPAR  long_parity_len
+
+static const std::size_t long_string_len = 4096;
 static char long_string [long_string_len];
+static const size_t long_parity_len = (LLEN - 1) & 0x01 ?
+           (LLEN - 1) / 2 : (LLEN - 2) / 2;
 
-static const int long_parity_len = (long_string_len - 1) & 0x01 ? 
-           (long_string_len - 1) / 2 : (long_string_len - 2) / 2;
 
-static const char* exp_exceptions[] = 
+static const char* const exp_exceptions[] = 
     { "unknown exception", "out_of_range", "length_error" };
 
 /**************************************************************************/
 
-static const struct TestCase {
-
+static const struct TestCase
+{
     int  line;
 
     int  pos1;
@@ -80,16 +85,16 @@
     int  cnt;
     char ch;
 
-    char* str;
+    const char* str;
     std::size_t str_len;
 
-    char* src;
+    const char* src;
     std::size_t src_len;
 
-    char* res;
+    const char* res;
     std::size_t res_len;
 
-    char* it_res;
+    const char* it_res;
     std::size_t it_res_len;
 
     int bthrow;
@@ -97,10 +102,11 @@
 } test_cases [] = {
 
 #undef TEST
-#define TEST(str, pos1, num1, src, pos2, num2, cnt, ch, res, it_res, bthrow) \
-    { __LINE__, pos1, num1, pos2, num2, cnt, ch, (char*) str,                \
-      sizeof str - 1, (char*) src, sizeof src - 1, (char*) res,              \
-      sizeof res - 1, (char*) it_res, sizeof it_res - 1, bthrow }
+#define TEST(str, pos1, num1, src, pos2, num2, cnt,             \
+             ch, res, it_res, bthrow)                           \
+    { __LINE__, pos1, num1, pos2, num2, cnt, ch, str,           \
+      sizeof str - 1, src, sizeof src - 1, res,                 \
+      sizeof res - 1, it_res, sizeof it_res - 1, bthrow }
 
     //    +----------------------------------------- controlled sequence
     //    |      +---------------------------------- replace() pos1 argument
@@ -181,32 +187,26 @@
     TEST ("\0ab\0\0c", 5, 0, "\0e", 0, 2, 2, '\0', "\0ab\0\0\0ec", 
                                                            "\0ab\0\0\0ec", 0),
 
-    TEST (long_string, 0, long_string_len - 1, "ab", 
+    TEST (LSTR, 0, LLEN - 1, "ab", 
                                       0, 2, 2, 'a',  "ab",      "ab",      0),
-    TEST (long_string, 1, long_string_len - 2, "ab", 
+    TEST (LSTR, 1, LLEN - 2, "ab", 
                                       0, 2, 2, 'a',  "xab",     "xab",     0),
-    TEST (long_string, 0, long_string_len - 2, "ab", 
+    TEST (LSTR, 0, LLEN - 2, "ab", 
                                       0, 2, 2, 'a',  "abx",     "abx",     0),
-    TEST (long_string, 1, long_string_len - 3, "", 
+    TEST (LSTR, 1, LLEN - 3, "", 
                                       0, 0, 0, 'a',  "xx",      "xx",      0),
-    TEST (long_string, 1, long_string_len - 4, "\0\0", 
+    TEST (LSTR, 1, LLEN - 4, "\0\0", 
                                       0, 2, 1, '\0', "x\0\0xx", "x\0\0xx", 0),
 
-    TEST ("a", 0, 1, long_string, 0, long_string_len - 1, long_string_len - 1, 
-                                            'a', long_string, long_string, 0),
+    TEST ("a", 0, 1, LSTR, 0, LLEN - 1, LLEN - 1, 
+                                            'a', LSTR, LSTR, 0),
+
+    TEST (LSTR, 0, LLEN - 1, LSTR, 0, LLEN - 1, LLEN - 1, 'a', LSTR, LSTR, 0),
 
-    TEST (long_string, 0, long_string_len - 1, long_string, 0, 
-                                 long_string_len - 1, long_string_len - 1, 
-                                            'a', long_string, long_string, 0),
-
-    TEST (long_string, 0, long_parity_len, long_string, 0, 
-                                 long_parity_len, long_parity_len, 
-                                            'a', long_string, long_string, 0),
-
-    TEST (long_string, long_parity_len, long_string_len - 1 - long_parity_len, 
-       long_string, 0, long_string_len - 1 - long_parity_len, 
-                       long_string_len - 1 - long_parity_len, 
-                                            'a', long_string, long_string, 0),
+    TEST (LSTR, 0, LPAR, LSTR, 0,  LPAR, LPAR, 'a', LSTR, LSTR, 0),
+
+    TEST (LSTR, LPAR, LLEN - 1 - LPAR, 
+          LSTR, 0, LLEN - 1 - LPAR, LLEN - 1 - LPAR,  'a', LSTR, LSTR, 0),
 
 #ifndef _RWSTD_NO_EXCEPTIONS
 
@@ -216,8 +216,8 @@
     TEST ("a",        10, 0, "",    0, 0, 0, ' ',  "",        "",          1),
     TEST ("a",         0, 0, "a",  10, 0, 0, ' ',  "",        "",          2),
 
-    TEST (long_string, long_string_len + 10, 0, "", 0, 0, 0,  ' ', "", "", 1),
-    TEST (long_string, 0, 0, long_string, long_string_len + 10, 
+    TEST (LSTR, LLEN + 10, 0, "", 0, 0, 0,  ' ', "", "", 1),
+    TEST (LSTR, 0, 0, LSTR, LLEN + 10, 
                                                        0, 0,  ' ', "", "", 2),
 
 #endif   // _RWSTD_NO_EXCEPTIONS
@@ -357,25 +357,25 @@
 template <class charT, class Traits>
 void test_replace (charT, Traits*, 
                    int             which,
-                   MemFun         *pfid, 
+                   const MemFun   *pfid, 
                    const TestCase &cs)
 {
     typedef std::basic_string <charT, Traits, 
                                std::allocator<charT> > TestString;
 
-    static charT wstr [long_string_len];
-    static charT wsrc [long_string_len];
-    static charT wres [long_string_len];
+    static charT wstr [LLEN];
+    static charT wsrc [LLEN];
+    static charT wres [LLEN];
 
     // construct strings
-    bool use_res = (4 == which || 7 == which);
-    bool use_iters = (6 <= which);
+    const bool use_res = (4 == which || 7 == which);
+    const bool use_iters = (6 <= which);
 
-    char* pstrres = use_res ? 
+    const char* const pstrres = use_res ? 
         use_iters ? cs.it_res : cs.res 
       : cs.str;
 
-    std::size_t res_len = use_res ? 
+    const std::size_t res_len = use_res ? 
         use_iters ? cs.it_res_len : cs.res_len 
       : cs.str_len;
 
@@ -390,15 +390,17 @@
     // used to workaround the problem with empty UserChar strings output
     static charT wempty [10]; 
     rw_widen (wempty, "<empty>", 7);
-    TestString s_empty (wempty, 7);
+
+    const TestString s_empty (wempty, 7);
+
     bool src_use_empty = 
         0 == s_src.size () && sizeof (charT) > sizeof (wchar_t);
 
-    int first1_off = cs.pos1;
-    int last1_off  = cs.pos1 + cs.num1; 
+    const int first1_off = cs.pos1;
+    const int last1_off  = cs.pos1 + cs.num1; 
 
-    int first2_off = cs.pos2;
-    int last2_off  = cs.pos2 + cs.num2;
+    const int first2_off = cs.pos2;
+    const int last2_off  = cs.pos2 + cs.num2;
 
 #ifndef _RWSTD_NO_EXCEPTIONS
 
@@ -421,9 +423,9 @@
     std::size_t exp_len = 0;
     std::size_t dummy_len = 0;
 
-    TestString& res_str = 
+    const TestString& res_str = 
         test_replace (which, cs, s_str, wsrc, true, &exp_len);
-    TestString& ctl_str = 
+    const TestString& ctl_str = 
         test_replace (which, cs, s_res, wsrc, false, &dummy_len);
 
 #define CALLFMAT                                                             \
@@ -463,13 +465,14 @@
                    CALLARGS, len, exp_len);
     }
 
-    bool success = !TestString::traits_type::compare (res_str.c_str(), 
-                        ctl_str.c_str(), ctl_str.size ());
+    const bool success =
+        !TestString::traits_type::compare (res_str.c_str(), 
+                                           ctl_str.c_str(), ctl_str.size ());
 
     // to workaround UserChar's empty string output problem
-    bool use_empty_res = 
+    const bool use_empty_res = 
         0 == res_str.size () && sizeof (charT) > sizeof (wchar_t);
-    bool use_empty_ctl = 
+    const bool use_empty_ctl = 
         0 == ctl_str.size () && sizeof (charT) > sizeof (wchar_t);
 
     rw_assert (success, 0, cs.line,
@@ -522,8 +525,7 @@
 /**************************************************************************/
 
 static void 
-test_replace (MemFun *pfid,
-              int     which)
+test_replace (const MemFun *pfid, int which)
 {
     rw_info (0, 0, 0, "std::basic_string<%s, %s<%1$s>, %s<%1$s>>::"
              "replace (%{?}size_type pos1%{;}%{?}iterator i1%{;}"
@@ -585,7 +587,7 @@
 /**************************************************************************/
 
 static void 
-note_test_disabled (MemFun *pfid, int which)
+note_test_disabled (const MemFun *pfid, int which)
 {
     rw_note (0, 0, 0, "std::basic_string<%s, %s<%1$s>, %s<%1$s>>::"
              "replace (%{?}size_type pos1%{;}%{?}iterator i1%{;}"
@@ -604,7 +606,7 @@
 }
 
 static void
-run_test (MemFun *pfid)
+run_test (const MemFun *pfid)
 {
     if (MemFun::UserTraits == pfid->tid_ && rw_opt_no_user_traits) {
         rw_note (1 < rw_opt_no_user_traits++, 0, 0,
@@ -655,10 +657,10 @@
 
 int run_test (int, char*[])
 {
-    if ('\0' == long_string [0]) {
-        // initialize long_string
-        for (std::size_t i = 0; i != sizeof long_string - 1; ++i)
-            long_string [i] = 'x';
+    if ('\0' == LSTR [0]) {
+        // initialize LSTR
+        for (std::size_t i = 0; i != sizeof LSTR - 1; ++i)
+            LSTR [i] = 'x';
     }
 
     if (rw_enabled ("char")) {