OSDN Git Service

2007-02-18 Paolo Carlini <pcarlini@suse.de>
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / testsuite / 21_strings / basic_string / replace / wchar_t / 1.cc
1 // 1999-06-10 bkoz
2
3 // Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
4 // 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
5 //
6 // This file is part of the GNU ISO C++ Library.  This library is free
7 // software; you can redistribute it and/or modify it under the
8 // terms of the GNU General Public License as published by the
9 // Free Software Foundation; either version 2, or (at your option)
10 // any later version.
11
12 // This library is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 // GNU General Public License for more details.
16
17 // You should have received a copy of the GNU General Public License along
18 // with this library; see the file COPYING.  If not, write to the Free
19 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
20 // USA.
21
22 // 21.3.5.6 basic_string::replace
23
24 #include <string>
25 #include <algorithm> // for std::find
26 #include <testsuite_hooks.h>
27
28 bool test01(void)
29 {
30   bool test __attribute__((unused)) = true;
31   typedef std::wstring::size_type csize_type;
32   typedef std::wstring::const_reference cref;
33   typedef std::wstring::reference ref;
34
35   const wchar_t str_lit01[] = L"ventura, california";
36   const std::wstring str01(str_lit01);
37   std::wstring str02(L"del mar, california");
38   std::wstring str03(L" and ");
39   std::wstring str05;
40
41   // wstring& replace(size_type pos, size_type n, const wstring& string)
42   // wstring& replace(size_type pos1, size_type n1, const wstring& string,
43   //                 size_type pos2, size_type n2)
44   // wstring& replace(size_type pos, size_type n1, const wchar_t* s, size_type n2)
45   // wstring& replace(size_type pos, size_type n1, const wchar_t* s)
46   // wstring& replace(size_type pos, size_type n1, size_type n2, wchar_t c)
47   // wstring& replace(iterator it1, iterator it2, const wstring& str)
48   // wstring& replace(iterator it1, iterator it2, const wchar_t* s, size_type n)
49   // wstring& replace(iterator it1, iterator it2, const wchar_t* s)
50   // wstring& replace(iterator it1, iterator it2, size_type n, char c)
51   // template<typename InputIter>
52   //   wstring& replace(iterator it1, iterator it2, InputIter j1, InputIter j2)
53
54   // with mods, from tstring.cc, from jason merrill, et. al.
55   std::wstring X = L"Hello";
56   std::wstring x = X;
57
58   wchar_t ch = x[0];
59   VERIFY( ch == L'H' );
60
61   std::wstring z = x.substr(2, 3);
62   VERIFY( z == L"llo" );
63
64   x.replace(2, 2, L"r");
65   VERIFY( x == L"Hero" );
66
67   x = X;
68   x.replace(0, 1, L"j");
69   VERIFY( x == L"jello" );
70
71   wchar_t ar[] = { L'H', L'e', L'l', L'l', L'o' };
72   x.replace(std::find(x.begin(), x.end(), L'l'), 
73             std::find(x.rbegin(), x.rend(), L'l').base(), ar, 
74             ar + sizeof(ar) / sizeof(ar[0]));
75   VERIFY( x == L"jeHelloo" );
76   return test;
77 }
78
79 int main()
80
81   test01();
82   return 0;
83 }