OLD | NEW |
| (Empty) |
1 /******************************************************************** | |
2 * COPYRIGHT: | |
3 * Copyright (c) 2002-2007, International Business Machines Corporation and | |
4 * others. All Rights Reserved. | |
5 ********************************************************************/ | |
6 | |
7 // | |
8 // regextst.cpp | |
9 // | |
10 // ICU Regular Expressions test, part of intltest. | |
11 // | |
12 | |
13 #include "intltest.h" | |
14 | |
15 #include "v32test.h" | |
16 #include "uvectr32.h" | |
17 #include "uvector.h" | |
18 #include "util.h" | |
19 #include <stdlib.h> | |
20 #include <stdio.h> | |
21 | |
22 | |
23 //--------------------------------------------------------------------------- | |
24 // | |
25 // Test class boilerplate | |
26 // | |
27 //--------------------------------------------------------------------------- | |
28 UVector32Test::UVector32Test() | |
29 { | |
30 } | |
31 | |
32 | |
33 UVector32Test::~UVector32Test() | |
34 { | |
35 } | |
36 | |
37 | |
38 | |
39 void UVector32Test::runIndexedTest( int32_t index, UBool exec, const char* &name
, char* /*par*/ ) | |
40 { | |
41 if (exec) logln("TestSuite UVector32Test: "); | |
42 switch (index) { | |
43 | |
44 case 0: name = "UVector32_API"; | |
45 if (exec) UVector32_API(); | |
46 break; | |
47 default: name = ""; | |
48 break; //needed to end loop | |
49 } | |
50 } | |
51 | |
52 | |
53 //--------------------------------------------------------------------------- | |
54 // | |
55 // Error Checking / Reporting macros used in all of the tests. | |
56 // | |
57 //--------------------------------------------------------------------------- | |
58 #define TEST_CHECK_STATUS(status) \ | |
59 if (U_FAILURE(status)) {\ | |
60 errln("UVector32Test failure at line %d. status=%s\n", __LINE__, u_erro
rName(status));\ | |
61 return;\ | |
62 } | |
63 | |
64 #define TEST_ASSERT(expr) \ | |
65 if ((expr)==FALSE) {\ | |
66 errln("UVector32Test failure at line %d.\n", __LINE__);\ | |
67 } | |
68 | |
69 //--------------------------------------------------------------------------- | |
70 // | |
71 // UVector32_API Check for basic functionality of UVector32. | |
72 // | |
73 //--------------------------------------------------------------------------- | |
74 void UVector32Test::UVector32_API() { | |
75 | |
76 UErrorCode status = U_ZERO_ERROR; | |
77 UVector32 *a; | |
78 UVector32 *b; | |
79 | |
80 a = new UVector32(status); | |
81 TEST_CHECK_STATUS(status); | |
82 delete a; | |
83 | |
84 status = U_ZERO_ERROR; | |
85 a = new UVector32(2000, status); | |
86 TEST_CHECK_STATUS(status); | |
87 delete a; | |
88 | |
89 // | |
90 // assign() | |
91 // | |
92 status = U_ZERO_ERROR; | |
93 a = new UVector32(status); | |
94 a->addElement(10, status); | |
95 a->addElement(20, status); | |
96 a->addElement(30, status); | |
97 b = new UVector32(status); | |
98 b->assign(*a, status); | |
99 TEST_ASSERT(b->size() == 3); | |
100 TEST_ASSERT(b->elementAti(1) == 20); | |
101 TEST_CHECK_STATUS(status); | |
102 delete a; | |
103 delete b; | |
104 | |
105 // | |
106 // operator == and != and equals() | |
107 // | |
108 status = U_ZERO_ERROR; | |
109 a = new UVector32(status); | |
110 a->addElement(10, status); | |
111 a->addElement(20, status); | |
112 a->addElement(30, status); | |
113 b = new UVector32(status); | |
114 TEST_ASSERT(*b != *a); | |
115 TEST_ASSERT(!(*b == *a)); | |
116 TEST_ASSERT(!b->equals(*a)); | |
117 b->assign(*a, status); | |
118 TEST_ASSERT(*b == *a); | |
119 TEST_ASSERT(!(*b != *a)); | |
120 TEST_ASSERT(b->equals(*a)); | |
121 b->addElement(666, status); | |
122 TEST_ASSERT(*b != *a); | |
123 TEST_ASSERT(!(*b == *a)); | |
124 TEST_ASSERT(!b->equals(*a)); | |
125 TEST_CHECK_STATUS(status); | |
126 delete b; | |
127 delete a; | |
128 | |
129 // | |
130 // addElement(). Covered by above tests. | |
131 // | |
132 | |
133 // | |
134 // setElementAt() | |
135 // | |
136 status = U_ZERO_ERROR; | |
137 a = new UVector32(status); | |
138 a->addElement(10, status); | |
139 a->addElement(20, status); | |
140 a->addElement(30, status); | |
141 a->setElementAt(666, 1); | |
142 TEST_ASSERT(a->elementAti(0) == 10); | |
143 TEST_ASSERT(a->elementAti(1) == 666); | |
144 TEST_ASSERT(a->size() == 3); | |
145 TEST_CHECK_STATUS(status); | |
146 delete a; | |
147 | |
148 // | |
149 // insertElementAt() | |
150 // | |
151 status = U_ZERO_ERROR; | |
152 a = new UVector32(status); | |
153 a->addElement(10, status); | |
154 a->addElement(20, status); | |
155 a->addElement(30, status); | |
156 a->insertElementAt(666, 1, status); | |
157 TEST_ASSERT(a->elementAti(0) == 10); | |
158 TEST_ASSERT(a->elementAti(1) == 666); | |
159 TEST_ASSERT(a->elementAti(2) == 20); | |
160 TEST_ASSERT(a->elementAti(3) == 30); | |
161 TEST_ASSERT(a->size() == 4); | |
162 TEST_CHECK_STATUS(status); | |
163 delete a; | |
164 | |
165 // | |
166 // elementAti() covered by above tests | |
167 // | |
168 | |
169 // | |
170 // lastElementi | |
171 // | |
172 status = U_ZERO_ERROR; | |
173 a = new UVector32(status); | |
174 a->addElement(10, status); | |
175 a->addElement(20, status); | |
176 a->addElement(30, status); | |
177 TEST_ASSERT(a->lastElementi() == 30); | |
178 TEST_CHECK_STATUS(status); | |
179 delete a; | |
180 | |
181 | |
182 // | |
183 // indexOf | |
184 // | |
185 status = U_ZERO_ERROR; | |
186 a = new UVector32(status); | |
187 a->addElement(10, status); | |
188 a->addElement(20, status); | |
189 a->addElement(30, status); | |
190 TEST_ASSERT(a->indexOf(30, 0) == 2); | |
191 TEST_ASSERT(a->indexOf(40, 0) == -1); | |
192 TEST_ASSERT(a->indexOf(10, 0) == 0); | |
193 TEST_ASSERT(a->indexOf(10, 1) == -1); | |
194 TEST_CHECK_STATUS(status); | |
195 delete a; | |
196 | |
197 | |
198 // | |
199 // contains | |
200 // | |
201 status = U_ZERO_ERROR; | |
202 a = new UVector32(status); | |
203 a->addElement(10, status); | |
204 a->addElement(20, status); | |
205 a->addElement(30, status); | |
206 TEST_ASSERT(a->contains(10) == TRUE); | |
207 TEST_ASSERT(a->contains(11) == FALSE); | |
208 TEST_ASSERT(a->contains(20) == TRUE); | |
209 TEST_ASSERT(a->contains(-10) == FALSE); | |
210 TEST_CHECK_STATUS(status); | |
211 delete a; | |
212 | |
213 | |
214 // | |
215 // containsAll | |
216 // | |
217 status = U_ZERO_ERROR; | |
218 a = new UVector32(status); | |
219 a->addElement(10, status); | |
220 a->addElement(20, status); | |
221 a->addElement(30, status); | |
222 b = new UVector32(status); | |
223 TEST_ASSERT(a->containsAll(*b) == TRUE); | |
224 b->addElement(2, status); | |
225 TEST_ASSERT(a->containsAll(*b) == FALSE); | |
226 b->setElementAt(10, 0); | |
227 TEST_ASSERT(a->containsAll(*b) == TRUE); | |
228 TEST_ASSERT(b->containsAll(*a) == FALSE); | |
229 b->addElement(30, status); | |
230 b->addElement(20, status); | |
231 TEST_ASSERT(a->containsAll(*b) == TRUE); | |
232 TEST_ASSERT(b->containsAll(*a) == TRUE); | |
233 b->addElement(2, status); | |
234 TEST_ASSERT(a->containsAll(*b) == FALSE); | |
235 TEST_ASSERT(b->containsAll(*a) == TRUE); | |
236 TEST_CHECK_STATUS(status); | |
237 delete a; | |
238 delete b; | |
239 | |
240 // | |
241 // removeAll | |
242 // | |
243 status = U_ZERO_ERROR; | |
244 a = new UVector32(status); | |
245 a->addElement(10, status); | |
246 a->addElement(20, status); | |
247 a->addElement(30, status); | |
248 b = new UVector32(status); | |
249 a->removeAll(*b); | |
250 TEST_ASSERT(a->size() == 3); | |
251 b->addElement(20, status); | |
252 a->removeAll(*b); | |
253 TEST_ASSERT(a->size() == 2); | |
254 TEST_ASSERT(a->contains(10)==TRUE); | |
255 TEST_ASSERT(a->contains(30)==TRUE); | |
256 b->addElement(10, status); | |
257 a->removeAll(*b); | |
258 TEST_ASSERT(a->size() == 1); | |
259 TEST_ASSERT(a->contains(30) == TRUE); | |
260 TEST_CHECK_STATUS(status); | |
261 delete a; | |
262 delete b; | |
263 | |
264 // | |
265 // retainAll | |
266 // | |
267 status = U_ZERO_ERROR; | |
268 a = new UVector32(status); | |
269 a->addElement(10, status); | |
270 a->addElement(20, status); | |
271 a->addElement(30, status); | |
272 b = new UVector32(status); | |
273 b->addElement(10, status); | |
274 b->addElement(20, status); | |
275 b->addElement(30, status); | |
276 b->addElement(15, status); | |
277 a->retainAll(*b); | |
278 TEST_ASSERT(a->size() == 3); | |
279 b->removeElementAt(1); | |
280 a->retainAll(*b); | |
281 TEST_ASSERT(a->contains(20) == FALSE); | |
282 TEST_ASSERT(a->size() == 2); | |
283 b->removeAllElements(); | |
284 TEST_ASSERT(b->size() == 0); | |
285 a->retainAll(*b); | |
286 TEST_ASSERT(a->size() == 0); | |
287 TEST_CHECK_STATUS(status); | |
288 delete a; | |
289 delete b; | |
290 | |
291 // | |
292 // removeElementAt Tested above. | |
293 // | |
294 | |
295 // | |
296 // removeAllElments Tested above | |
297 // | |
298 | |
299 // | |
300 // size() tested above | |
301 // | |
302 | |
303 // | |
304 // isEmpty | |
305 // | |
306 status = U_ZERO_ERROR; | |
307 a = new UVector32(status); | |
308 TEST_ASSERT(a->isEmpty() == TRUE); | |
309 a->addElement(10, status); | |
310 TEST_ASSERT(a->isEmpty() == FALSE); | |
311 a->addElement(20, status); | |
312 a->removeElementAt(0); | |
313 TEST_ASSERT(a->isEmpty() == FALSE); | |
314 a->removeElementAt(0); | |
315 TEST_ASSERT(a->isEmpty() == TRUE); | |
316 TEST_CHECK_STATUS(status); | |
317 delete a; | |
318 | |
319 | |
320 // | |
321 // ensureCapacity, expandCapacity | |
322 // | |
323 status = U_ZERO_ERROR; | |
324 a = new UVector32(status); | |
325 TEST_ASSERT(a->isEmpty() == TRUE); | |
326 a->addElement(10, status); | |
327 TEST_ASSERT(a->ensureCapacity(5000, status)== TRUE); | |
328 TEST_ASSERT(a->expandCapacity(20000, status) == TRUE); | |
329 TEST_CHECK_STATUS(status); | |
330 delete a; | |
331 | |
332 // | |
333 // setSize | |
334 // | |
335 status = U_ZERO_ERROR; | |
336 a = new UVector32(status); | |
337 a->addElement(10, status); | |
338 a->addElement(20, status); | |
339 a->addElement(30, status); | |
340 a->setSize(100); | |
341 TEST_ASSERT(a->size() == 100); | |
342 TEST_ASSERT(a->elementAti(0) == 10); | |
343 TEST_ASSERT(a->elementAti(1) == 20); | |
344 TEST_ASSERT(a->elementAti(2) == 30); | |
345 TEST_ASSERT(a->elementAti(3) == 0); | |
346 a->setElementAt(666, 99); | |
347 a->setElementAt(777, 100); | |
348 TEST_ASSERT(a->elementAti(99) == 666); | |
349 TEST_ASSERT(a->elementAti(100) == 0); | |
350 a->setSize(2); | |
351 TEST_ASSERT(a->elementAti(1) == 20); | |
352 TEST_ASSERT(a->elementAti(2) == 0); | |
353 TEST_ASSERT(a->size() == 2); | |
354 a->setSize(0); | |
355 TEST_ASSERT(a->empty() == TRUE); | |
356 TEST_ASSERT(a->size() == 0); | |
357 | |
358 TEST_CHECK_STATUS(status); | |
359 delete a; | |
360 | |
361 // | |
362 // containsNone | |
363 // | |
364 status = U_ZERO_ERROR; | |
365 a = new UVector32(status); | |
366 a->addElement(10, status); | |
367 a->addElement(20, status); | |
368 a->addElement(30, status); | |
369 b = new UVector32(status); | |
370 TEST_ASSERT(a->containsNone(*b) == TRUE); | |
371 b->addElement(5, status); | |
372 TEST_ASSERT(a->containsNone(*b) == TRUE); | |
373 b->addElement(30, status); | |
374 TEST_ASSERT(a->containsNone(*b) == FALSE); | |
375 | |
376 TEST_CHECK_STATUS(status); | |
377 delete a; | |
378 delete b; | |
379 | |
380 // | |
381 // sortedInsert | |
382 // | |
383 status = U_ZERO_ERROR; | |
384 a = new UVector32(status); | |
385 a->sortedInsert(30, status); | |
386 a->sortedInsert(20, status); | |
387 a->sortedInsert(10, status); | |
388 TEST_ASSERT(a->elementAti(0) == 10); | |
389 TEST_ASSERT(a->elementAti(1) == 20); | |
390 TEST_ASSERT(a->elementAti(2) == 30); | |
391 | |
392 TEST_CHECK_STATUS(status); | |
393 delete a; | |
394 | |
395 // | |
396 // getBuffer | |
397 // | |
398 status = U_ZERO_ERROR; | |
399 a = new UVector32(status); | |
400 a->addElement(10, status); | |
401 a->addElement(20, status); | |
402 int32_t *buf = a->getBuffer(); | |
403 TEST_ASSERT(buf[0] == 10); | |
404 TEST_ASSERT(buf[1] == 20); | |
405 a->setSize(20000); | |
406 int32_t *resizedBuf; | |
407 resizedBuf = a->getBuffer(); | |
408 //TEST_ASSERT(buf != resizedBuf); // The buffer might have been realloc'd | |
409 TEST_ASSERT(resizedBuf[0] == 10); | |
410 TEST_ASSERT(resizedBuf[1] == 20); | |
411 | |
412 TEST_CHECK_STATUS(status); | |
413 delete a; | |
414 | |
415 | |
416 // | |
417 // empty | |
418 // | |
419 status = U_ZERO_ERROR; | |
420 a = new UVector32(status); | |
421 TEST_ASSERT(a->empty() == TRUE); | |
422 a->addElement(10, status); | |
423 TEST_ASSERT(a->empty() == FALSE); | |
424 a->addElement(20, status); | |
425 a->removeElementAt(0); | |
426 TEST_ASSERT(a->empty() == FALSE); | |
427 a->removeElementAt(0); | |
428 TEST_ASSERT(a->empty() == TRUE); | |
429 TEST_CHECK_STATUS(status); | |
430 delete a; | |
431 | |
432 | |
433 // | |
434 // peeki | |
435 // | |
436 status = U_ZERO_ERROR; | |
437 a = new UVector32(status); | |
438 a->addElement(10, status); | |
439 TEST_ASSERT(a->peeki() == 10); | |
440 a->addElement(20, status); | |
441 TEST_ASSERT(a->peeki() == 20); | |
442 a->addElement(30, status); | |
443 TEST_ASSERT(a->peeki() == 30); | |
444 TEST_CHECK_STATUS(status); | |
445 delete a; | |
446 | |
447 | |
448 // | |
449 // popi | |
450 // | |
451 status = U_ZERO_ERROR; | |
452 a = new UVector32(status); | |
453 a->addElement(10, status); | |
454 a->addElement(20, status); | |
455 a->addElement(30, status); | |
456 TEST_ASSERT(a->popi() == 30); | |
457 TEST_ASSERT(a->popi() == 20); | |
458 TEST_ASSERT(a->popi() == 10); | |
459 TEST_ASSERT(a->popi() == 0); | |
460 TEST_ASSERT(a->isEmpty()); | |
461 TEST_CHECK_STATUS(status); | |
462 delete a; | |
463 | |
464 // | |
465 // push | |
466 // | |
467 status = U_ZERO_ERROR; | |
468 a = new UVector32(status); | |
469 TEST_ASSERT(a->push(10, status) == 10); | |
470 TEST_ASSERT(a->push(20, status) == 20); | |
471 TEST_ASSERT(a->push(30, status) == 30); | |
472 TEST_ASSERT(a->size() == 3); | |
473 TEST_ASSERT(a->popi() == 30); | |
474 TEST_ASSERT(a->popi() == 20); | |
475 TEST_ASSERT(a->popi() == 10); | |
476 TEST_ASSERT(a->isEmpty()); | |
477 TEST_CHECK_STATUS(status); | |
478 delete a; | |
479 | |
480 | |
481 // | |
482 // reserveBlock | |
483 // | |
484 status = U_ZERO_ERROR; | |
485 a = new UVector32(status); | |
486 a->ensureCapacity(1000, status); | |
487 | |
488 // TODO: | |
489 | |
490 TEST_CHECK_STATUS(status); | |
491 delete a; | |
492 | |
493 } | |
494 | |
495 | |
OLD | NEW |