remove \r
[extl.git] / extl / string / test / stack_string_test.h
blob356a915bca574a9a7afc320c207b9666a106465e
1 /* ///////////////////////////////////////////////////////////////////////
2 * File: stack_string_test.h
4 * Created: 08.03.20
5 * Updated: 08.04.14
7 * Brief: stack_string unit-testing
9 * [<Home>]
10 * Copyright (c) 2008-2020, Waruqi All rights reserved.
11 * //////////////////////////////////////////////////////////////////// */
13 #ifndef EXTL_STRING_STACK_STRING_TEST_H
14 #define EXTL_STRING_STACK_STRING_TEST_H
16 #ifndef EXTL_STRING_STACK_STRING_H
17 # error This file must be included of stack_string.h
18 #endif
20 /* ///////////////////////////////////////////////////////////////////////
21 * test namespace
23 EXTL_BEGIN_NAMESPACE
24 EXTL_TEST_NAME_BEGIN_NAMESPACE(stack_string_test)
26 /* ///////////////////////////////////////////////////////////////////////
27 * Unit-testing
29 static int stack_string_test()
31 typedef stack_string char_stack_string;
33 char_stack_string char_string0;
34 char_stack_string char_string1(_T("char_string"));
35 char_stack_string char_string2(char_string1);
36 char_stack_string char_string3(char_string1, 4);
37 char_stack_string char_string4(_T('a'), 5);
38 char_stack_string char_string5(_T("char_string"), 4);
40 EXTL_ASSERT(!char_string1.compare(_T("char_string")));
41 EXTL_ASSERT(!char_string2.compare(char_string1));
42 EXTL_ASSERT(!char_string4.compare(_T("aaaaaaaaa"), 5));
43 EXTL_ASSERT(!char_string5.compare(_T("char")));
45 EXTL_ASSERT(char_string0.is_empty());
46 EXTL_ASSERT(!char_string1.is_empty());
48 EXTL_ASSERT(char_string2.length() == char_string1.length());
49 EXTL_ASSERT(char_string3.length() == 4);
50 EXTL_ASSERT(char_string4.length() == 5);
51 EXTL_ASSERT(char_string5.length() == 4);
53 char_string4.resize(10);
54 EXTL_ASSERT(char_string4.length() == 10);
56 char_string4.resize(1);
57 EXTL_ASSERT(!char_string4.compare(_T("a")));
58 EXTL_ASSERT(char_string4.length() == 1);
60 char_stack_string char_string6(_T("char_string"));
61 char_stack_string char_string7(_T("char"));
62 char_string7.swap(char_string6);
63 EXTL_ASSERT(!char_string7.compare(_T("char_string")));
64 EXTL_ASSERT(!char_string6.compare(_T("char")));
66 EXTL_ASSERT(char_string6[0] == _T('c'));
67 EXTL_ASSERT(char_string7.at(4) == _T('_'));
69 char_string6.assign(_T("char_string"));
70 char_string7.assign(char_string6, 4);
71 EXTL_ASSERT(!char_string7.compare(_T("char")));
72 char_string7.assign(_T("char_string"), 4);
73 EXTL_ASSERT(!char_string7.compare(_T("char")));
74 char_string7.assign(_T('a'), 4);
75 EXTL_ASSERT(!char_string7.compare(_T("aaaa")));
76 char_string7 = _T('a');
77 EXTL_ASSERT(!char_string7.compare(_T("a")));
79 char_string7 += _T('a');
80 EXTL_ASSERT(!char_string7.compare(_T("aa")));
81 char_string7.append(char_string6, 4);
82 EXTL_ASSERT(!char_string7.compare(_T("aachar")));
84 char_stack_string char_string8(_T("123456789"));
85 char_stack_string char_string9(_T("123456789"));
86 char_stack_string char_string10(_T("987654321"));
88 char_stack_string char_string11(_T("ABCDabcd987654321"));
89 char_string11.to_lower();
90 EXTL_ASSERT(!char_string11.compare(_T("abcdabcd987654321")));
91 char_string11.to_upper();
92 EXTL_ASSERT(!char_string11.compare(_T("ABCDABCD987654321")));
93 EXTL_ASSERT(!char_string11.compare_nocase(_T("abcdabcd987654321")));
95 EXTL_ASSERT(char_string8 == char_string9);
96 EXTL_ASSERT(char_string8 != char_string10);
98 EXTL_ASSERT(char_string8 < char_string10);
99 EXTL_ASSERT(char_string10 > char_string8);
100 EXTL_ASSERT(char_string8 <= char_string10);
101 EXTL_ASSERT(char_string10 >= char_string8);
103 EXTL_ASSERT(_T("123456789") == char_string9);
104 EXTL_ASSERT(_T("123456789") != char_string10);
106 EXTL_ASSERT(char_string8 == _T("123456789"));
107 EXTL_ASSERT(char_string8 != _T("987654321"));
109 EXTL_ASSERT(char_string8 < _T("987654321"));
110 EXTL_ASSERT(char_string10 > _T("123456789"));
111 EXTL_ASSERT(char_string8 <= _T("987654321"));
112 EXTL_ASSERT(char_string10 >= _T("123456789"));
114 EXTL_ASSERT(_T("123456789") < char_string10);
115 EXTL_ASSERT(_T("987654321") > char_string8);
116 EXTL_ASSERT(_T("123456789") <= char_string10);
117 EXTL_ASSERT(_T("987654321") >= char_string8);
119 char_string0 = _T("1234");
120 char_string1 = _T("5678");
121 char_string2 = char_string0 + char_string1 + _T("9");
122 EXTL_ASSERT(!char_string2.compare(_T("123456789")));
124 char_string2 = _T("123456789");
125 EXTL_ASSERT(!char_string2.left(4).compare(_T("1234")));
126 EXTL_ASSERT(!char_string2.right(4).compare(_T("6789")));
128 // iterator test
129 char_stack_string char_string12(_T("123456789"));
130 char_stack_string char_string13(char_string12.begin(), char_string12.end());
131 char_string13.assign(char_string13.rbegin(), char_string13.rend());
132 EXTL_ASSERT(!char_string13.compare(_T("987654321")));
133 EXTL_ASSERT(!char_string13.compare(char_string12.rbegin(), char_string12.rend()));
134 char_string13.append(char_string12.rbegin(), char_string12.rend());
135 EXTL_ASSERT(!char_string13.compare(_T("987654321987654321")));
137 e_tchar_t p[]=_T("123456789");
138 char_stack_string char_string14(p, p + 9);
139 EXTL_ASSERT(!char_string14.compare(_T("123456789")));
142 // critical value test
143 typedef basic_stack_string < e_tchar_t
145 , string_traits<e_tchar_t, std_char_traits<e_tchar_t> >
146 > char_tiny_stack_string;
147 char_tiny_stack_string tts(_T("12345"));
148 EXTL_ASSERT(!tts.compare(_T("12345")));
150 // replace operation
151 char_string2 = _T("12345");
153 char_string2.replace(0, 1, _T("aaa"), 3);
154 EXTL_ASSERT(!char_string2.compare(_T("aaa2345")));
156 char_string2.replace(7, 0, _T("aaa"), 3);
157 EXTL_ASSERT(!char_string2.compare(_T("aaa2345aaa")));
159 char_string2.replace(0, 3, char_string2.c_str() + 3, 4);
160 EXTL_ASSERT(!char_string2.compare(_T("23452345aaa")));
162 char_string2.replace(0, 4, char_string2.c_str() + 8, 3);
163 EXTL_ASSERT(!char_string2.compare(_T("aaa2345aaa")));
165 char_string2.replace(7, 3, char_string2.c_str(), 7);
166 EXTL_ASSERT(!char_string2.compare(_T("aaa2345aaa2345")));
168 char_string2.replace(3, 4, char_string2.c_str() + 5, 9);
169 EXTL_ASSERT(!char_string2.compare(_T("aaa45aaa2345aaa2345")));
171 char_string2.replace(8, 4, char_string2.c_str() + 5, 14);
172 EXTL_ASSERT(!char_string2.compare(_T("aaa45aaaaaa2345aaa2345aaa2345")));
175 char_string3 = _T("12345");
177 char_string3.replace(0, 1, _T("aaa"));
178 EXTL_ASSERT(!char_string3.compare(_T("aaa2345")));
180 char_string3.replace(char_string3.begin(), char_string3.end(), char_string3);
181 EXTL_ASSERT(!char_string3.compare(_T("aaa2345")));
183 char_string3.replace(char_string3.begin(), char_string3.end(), _T('a'));
184 EXTL_ASSERT(!char_string3.compare(_T("a")));
186 char_string3.replace(char_string3.begin(), _T('a'), 2);
187 EXTL_ASSERT(!char_string3.compare(_T("aa")));
189 char_string3.replace(char_string3.begin(), char_string3.end(), char_string3.begin(), char_string3.end());
190 EXTL_ASSERT(!char_string3.compare(_T("aa")));
192 // find string
193 char_string3 = _T("12345aa12345");
194 EXTL_ASSERT(5 == char_string3.find(_T("aa")));
195 EXTL_ASSERT(char_string3.fof() == char_string3.find(_T("aa4545")));
196 EXTL_ASSERT(5 == char_string3.find(_T('a')));
198 // rfind string
199 char_string3 = _T("12345aa12345");
200 EXTL_ASSERT(7 == char_string3.rfind(_T("12345")));
201 EXTL_ASSERT(char_string3.fof() == char_string3.rfind(_T("123dsad45aa")));
202 EXTL_ASSERT(6 == char_string3.rfind(_T('a')));
204 // replace string in the whole context
205 char_string3 = _T("12345aa1234512345");
206 char_string3.replace_all(_T("12345"), _T("1"));
207 EXTL_ASSERT(!char_string3.compare(_T("1aa11")));
208 char_string3.replace_all(_T('a'), _T('b'));
209 EXTL_ASSERT(!char_string3.compare(_T("1bb11")));
211 // erase string
212 char_string3 = _T("12345aa1234512345");
213 char_string3.erase(5, 2);
214 EXTL_ASSERT(!char_string3.compare(_T("123451234512345")));
215 char_string3.erase(char_string3.begin());
216 EXTL_ASSERT(!char_string3.compare(_T("23451234512345")));
217 char_string3.erase(++char_string3.begin(), char_string3.end());
218 EXTL_ASSERT(!char_string3.compare(_T("2")));
220 char_string3 = _T("12345");
221 char_string3.insert(0, _T("gg"));
222 EXTL_ASSERT(!char_string3.compare(_T("gg12345")));
223 char_string3.insert(2, _T("aa"));
224 EXTL_ASSERT(!char_string3.compare(_T("ggaa12345")));
225 char_string3.insert(4, _T('b'), 4);
226 EXTL_ASSERT(!char_string3.compare(_T("ggaabbbb12345")));
227 char_string3.insert(char_string3.begin(), _T('b'), 4);
228 EXTL_ASSERT(!char_string3.compare(_T("bbbbggaabbbb12345")));
229 char_string3.insert(char_string3.begin(), _T("gg"));
230 EXTL_ASSERT(!char_string3.compare(_T("ggbbbbggaabbbb12345")));
232 // Format string
233 char_string3.format(_T("123%d%s"), 456, _T("789"));
234 EXTL_ASSERT(!char_string3.compare(_T("123456789")));
235 char_string3.append_format(_T("123%d%s"), 456, _T("789"));
236 EXTL_ASSERT(!char_string3.compare(_T("123456789123456789")));
238 // Reverses string
239 char_string3 = _T("123456789");
240 EXTL_ASSERT(!char_string3.compare(char_string3.reverse()));
241 return 0;
243 int stack_string_test_ret = stack_string_test();
245 /* ///////////////////////////////////////////////////////////////////////
246 * ::test namespace
248 EXTL_TEST_NAME_END_NAMESPACE(stack_string_test)
249 EXTL_END_NAMESPACE
251 /* //////////////////////////////////////////////////////////////////// */
252 #endif /* EXTL_STRING_STACK_STRING_TEST_H */
253 /* //////////////////////////////////////////////////////////////////// */