1 /* ///////////////////////////////////////////////////////////////////////
2 * File: stack_string_test.h
7 * Brief: stack_string unit-testing
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
20 /* ///////////////////////////////////////////////////////////////////////
24 EXTL_TEST_NAME_BEGIN_NAMESPACE(stack_string_test
)
26 /* ///////////////////////////////////////////////////////////////////////
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")));
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")));
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")));
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')));
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")));
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")));
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")));
239 char_string3
= _T("123456789");
240 EXTL_ASSERT(!char_string3
.compare(char_string3
.reverse()));
243 int stack_string_test_ret
= stack_string_test();
245 /* ///////////////////////////////////////////////////////////////////////
248 EXTL_TEST_NAME_END_NAMESPACE(stack_string_test
)
251 /* //////////////////////////////////////////////////////////////////// */
252 #endif /* EXTL_STRING_STACK_STRING_TEST_H */
253 /* //////////////////////////////////////////////////////////////////// */