diff options
author | Mike Buland <eichlan@xagasoft.com> | 2009-02-08 00:44:10 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2009-02-08 00:44:10 +0000 |
commit | 366a8063730aa7ae696bcb9cf56eafd13d43dfc0 (patch) | |
tree | 42e3597edfde0c183506ad0d452f045cb7726137 /src/unit/fstring.unit | |
parent | 4f59dec6bad120b72f1bc075715d79bfbe881f7e (diff) | |
download | libbu++-366a8063730aa7ae696bcb9cf56eafd13d43dfc0.tar.gz libbu++-366a8063730aa7ae696bcb9cf56eafd13d43dfc0.tar.bz2 libbu++-366a8063730aa7ae696bcb9cf56eafd13d43dfc0.tar.xz libbu++-366a8063730aa7ae696bcb9cf56eafd13d43dfc0.zip |
So many updates. I recommend using the new FString iterators instead of direct
indexing. It is now many times faster, and requires less overhead. Also,
more stuff iterator related in every class. More on that later.
Diffstat (limited to '')
-rw-r--r-- | src/unit/fstring.unit | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/src/unit/fstring.unit b/src/unit/fstring.unit index 3912de2..a0d62da 100644 --- a/src/unit/fstring.unit +++ b/src/unit/fstring.unit | |||
@@ -138,3 +138,158 @@ | |||
138 | unitTest( a.getSubStr( -10 ) == "abcdefghijklmnop" ); | 138 | unitTest( a.getSubStr( -10 ) == "abcdefghijklmnop" ); |
139 | unitTest( a.getSubStr( -15, 4 ) == "abcd" ); | 139 | unitTest( a.getSubStr( -15, 4 ) == "abcd" ); |
140 | } | 140 | } |
141 | |||
142 | {%compareSub1} | ||
143 | { | ||
144 | Bu::FString a("just a string."); | ||
145 | unitTest( a.compareSub("a ", 5, 2) == true ); | ||
146 | unitTest( a.compareSub("string.aoeu", 7, 11 ) == false ); | ||
147 | unitTest( a.compareSub("string.aoeu", 7, 3 ) == true ); | ||
148 | } | ||
149 | |||
150 | {%compareSub2} | ||
151 | { | ||
152 | Bu::FString a("just a string."); | ||
153 | unitTest( a.compareSub(Bu::FString("a "), 5, 2) == true ); | ||
154 | unitTest( a.compareSub(Bu::FString("string.aoeu"), 7, 11 ) == false ); | ||
155 | unitTest( a.compareSub(Bu::FString("string.aoeu"), 7, 3 ) == true ); | ||
156 | } | ||
157 | |||
158 | {%iterator1} | ||
159 | { | ||
160 | Bu::FString a("This is a test."); | ||
161 | Bu::FString b; | ||
162 | for( Bu::FString::iterator i = a.begin(); i; i++ ) | ||
163 | { | ||
164 | b += *i; | ||
165 | } | ||
166 | unitTest( a == b ); | ||
167 | } | ||
168 | |||
169 | {%iterator2} | ||
170 | { | ||
171 | Bu::FString a("This is a test."); | ||
172 | Bu::FString b("--This is a test."); | ||
173 | Bu::FString::iterator ai = a.begin(); | ||
174 | Bu::FString::iterator bi = b.begin(); | ||
175 | unitTest( ai.compare( bi ) == false ); | ||
176 | unitTest( bi.compare( ai ) == false ); | ||
177 | bi++; bi++; | ||
178 | unitTest( ai.compare( bi ) == true ); | ||
179 | unitTest( bi.compare( ai ) == true ); | ||
180 | } | ||
181 | |||
182 | {%iterator3} | ||
183 | { | ||
184 | Bu::FString a("1234honour"); | ||
185 | Bu::FString b("--1234ueje"); | ||
186 | Bu::FString::iterator ai = a.begin(); | ||
187 | Bu::FString::iterator bi = b.begin(); | ||
188 | unitTest( ai.compare( bi, 4 ) == false ); | ||
189 | unitTest( bi.compare( ai, 4 ) == false ); | ||
190 | bi++; bi++; | ||
191 | unitTest( ai.compare( bi, 4 ) == true ); | ||
192 | unitTest( bi.compare( ai, 4 ) == true ); | ||
193 | unitTest( ai.compare( bi, 5 ) == false ); | ||
194 | unitTest( bi.compare( ai, 5 ) == false ); | ||
195 | |||
196 | } | ||
197 | |||
198 | {%iterator4} | ||
199 | { | ||
200 | Bu::FString a("1234aoeu"); | ||
201 | Bu::FString::iterator ai = a.begin(); | ||
202 | unitTest( ai.compare("1234") == false ); | ||
203 | unitTest( ai.compare("1234aoeu") == true ); | ||
204 | unitTest( ai.compare("1234aoeuee") == false ); | ||
205 | } | ||
206 | |||
207 | {%iterator5} | ||
208 | { | ||
209 | Bu::FString a("1234aoeu"); | ||
210 | Bu::FString::iterator ai = a.begin(); | ||
211 | unitTest( ai.compare("1234", 4) == true ); | ||
212 | unitTest( ai.compare("1234aoeu", 8) == true ); | ||
213 | unitTest( ai.compare("1234aoeuee", 10) == false ); | ||
214 | } | ||
215 | |||
216 | {%iterator6} | ||
217 | { | ||
218 | Bu::FString a("just ->this part"); | ||
219 | Bu::FString b; | ||
220 | Bu::FString::iterator s = a.begin(); | ||
221 | for(; s; s++ ) | ||
222 | { | ||
223 | if( *s == '>' ) | ||
224 | { | ||
225 | s++; | ||
226 | b.set( s ); | ||
227 | break; | ||
228 | } | ||
229 | } | ||
230 | unitTest( b == "this part" ); | ||
231 | |||
232 | b.append( s ); | ||
233 | |||
234 | Bu::FString c; | ||
235 | c.set( b.begin() ); | ||
236 | |||
237 | // This is here because the comparison operator used to cause flattening. | ||
238 | unitTest( b == "this partthis part" ); | ||
239 | unitTest( c == b ); | ||
240 | } | ||
241 | |||
242 | {%iterator7} | ||
243 | { | ||
244 | Bu::FString a("just [this] part"); | ||
245 | Bu::FString b; | ||
246 | Bu::FString::iterator s = a.begin(); | ||
247 | for(; s; s++ ) | ||
248 | { | ||
249 | if( *s == '[' ) | ||
250 | { | ||
251 | s++; | ||
252 | break; | ||
253 | } | ||
254 | } | ||
255 | Bu::FString::iterator e = s; | ||
256 | for(; e; e++ ) | ||
257 | { | ||
258 | if( *e == ']' ) | ||
259 | { | ||
260 | b.set( s, e ); | ||
261 | break; | ||
262 | } | ||
263 | } | ||
264 | unitTest( b == "this" ); | ||
265 | |||
266 | b.append( s, e ); | ||
267 | |||
268 | for( Bu::FString::iterator i = b.begin(); i;) | ||
269 | { | ||
270 | Bu::FString::iterator k = i; | ||
271 | k++; | ||
272 | if( !k ) | ||
273 | { | ||
274 | b.append( b.begin(), i ); | ||
275 | break; | ||
276 | } | ||
277 | i = k; | ||
278 | } | ||
279 | Bu::FString l; | ||
280 | l.set( b.begin() ); | ||
281 | unitTest( l == "thisthisthisthi" ); | ||
282 | for( Bu::FString::iterator i = b.begin(); i;) | ||
283 | { | ||
284 | Bu::FString::iterator k = i; | ||
285 | k++; | ||
286 | if( !k ) | ||
287 | { | ||
288 | b.append( b.begin(), i ); | ||
289 | break; | ||
290 | } | ||
291 | i = k; | ||
292 | } | ||
293 | l.set( b.begin() ); | ||
294 | unitTest( l == "thisthisthisthithisthisthisth" ); | ||
295 | } | ||