4 * Copyright (c) 2010 project bchan
6 * This software is provided 'as-is', without any express or implied
7 * warranty. In no event will the authors be held liable for any damages
8 * arising from the use of this software.
10 * Permission is granted to anyone to use this software for any purpose,
11 * including commercial applications, and to alter it and redistribute it
12 * freely, subject to the following restrictions:
14 * 1. The origin of this software must not be misrepresented; you must not
15 * claim that you wrote the original software. If you use this software
16 * in a product, an acknowledgment in the product documentation would be
17 * appreciated but is not required.
19 * 2. Altered source versions must be plainly marked as such, and must not be
20 * misrepresented as being the original software.
22 * 3. This notice may not be removed or altered from any source
27 #include <btron/btron.h>
35 LOCAL TEST_RESULT test_array_1()
39 TEST_RESULT result = TEST_RESULT_PASS;
42 err = arraybase_initialize(&array, sizeof(W), 100);
44 return TEST_RESULT_FAIL;
47 for (i = 0; i < 100; i++) {
48 err = arraybase_appendunit(&array, (VP)&i);
50 printf("arraybase_appendunit failure\n");
51 result = TEST_RESULT_FAIL;
54 for (i = 0; i < 100; i++) {
55 found = arraybase_getunitbyindex(&array, i, (VP)&val);
57 printf("arraybase_getunitbyindex not found failure\n");
58 result = TEST_RESULT_FAIL;
61 printf("arraybase_getunitbyindex unexpected value failure: %d:%d\n", i, *val);
62 result = TEST_RESULT_FAIL;
66 arraybase_finalize(&array);
71 LOCAL TEST_RESULT test_array_2()
75 TEST_RESULT result = TEST_RESULT_PASS;
78 err = arraybase_initialize(&array, sizeof(W), 100);
80 return TEST_RESULT_FAIL;
83 for (i = 0; i < 200; i++) {
84 err = arraybase_appendunit(&array, (VP)&i);
86 printf("arraybase_appendunit failure\n");
87 result = TEST_RESULT_FAIL;
90 for (i = 0; i < 200; i++) {
91 found = arraybase_getunitbyindex(&array, i, (VP)&val);
93 printf("arraybase_getunitbyindex not found failure\n");
94 result = TEST_RESULT_FAIL;
97 printf("arraybase_getunitbyindex unexpected value failure: %d:%d\n", i, *val);
98 result = TEST_RESULT_FAIL;
102 arraybase_finalize(&array);
107 LOCAL TEST_RESULT test_array_3()
111 TEST_RESULT result = TEST_RESULT_PASS;
114 err = arraybase_initialize(&array, sizeof(W), 100);
116 return TEST_RESULT_FAIL;
119 for (i = 0; i < 2000; i++) {
120 err = arraybase_appendunit(&array, (VP)&i);
122 printf("arraybase_appendunit failure\n");
123 result = TEST_RESULT_FAIL;
126 for (i = 0; i < 2000; i++) {
127 found = arraybase_getunitbyindex(&array, i, (VP)&val);
129 printf("arraybase_getunitbyindex not found failure\n");
130 result = TEST_RESULT_FAIL;
133 printf("arraybase_getunitbyindex unexpected value failure: %d:%d\n", i, *val);
134 result = TEST_RESULT_FAIL;
138 arraybase_finalize(&array);
143 LOCAL TEST_RESULT test_array_4()
147 TEST_RESULT result = TEST_RESULT_PASS;
150 err = arraybase_initialize(&array, sizeof(W), 100);
152 return TEST_RESULT_FAIL;
155 for (i = 0; i < 100; i++) {
156 err = arraybase_appendunit(&array, (VP)&i);
158 printf("arraybase_appendunit failure\n");
159 result = TEST_RESULT_FAIL;
162 for (i = 0; i < 200; i++) {
163 found = arraybase_getunitbyindex(&array, i, (VP)&val);
166 printf("arraybase_getunitbyindex not found failure\n");
167 result = TEST_RESULT_FAIL;
170 printf("arraybase_getunitbyindex unexpected value failure: %d:%d\n", i, *val);
171 result = TEST_RESULT_FAIL;
174 if (found != False) {
175 printf("arraybase_getunitbyindex found failure\n");
176 result = TEST_RESULT_FAIL;
181 arraybase_finalize(&array);
186 LOCAL TEST_RESULT test_array_5()
190 TEST_RESULT result = TEST_RESULT_PASS;
193 err = arraybase_initialize(&array, sizeof(W), 100);
195 return TEST_RESULT_FAIL;
198 for (i = 0; i < 50; i++) {
199 err = arraybase_appendunit(&array, (VP)&i);
201 printf("arraybase_appendunit failure\n");
202 result = TEST_RESULT_FAIL;
205 for (i = 0; i < 200; i++) {
206 found = arraybase_getunitbyindex(&array, i, (VP)&val);
209 printf("arraybase_getunitbyindex not found failure\n");
210 result = TEST_RESULT_FAIL;
213 printf("arraybase_getunitbyindex unexpected value failure: %d:%d\n", i, *val);
214 result = TEST_RESULT_FAIL;
217 if (found != False) {
218 printf("arraybase_getunitbyindex found failure\n");
219 result = TEST_RESULT_FAIL;
224 arraybase_finalize(&array);
229 LOCAL TEST_RESULT test_array_6()
233 TEST_RESULT result = TEST_RESULT_PASS;
236 err = arraybase_initialize(&array, sizeof(W), 100);
238 return TEST_RESULT_FAIL;
241 for (i = 0; i < 150; i++) {
242 err = arraybase_appendunit(&array, (VP)&i);
244 printf("arraybase_appendunit failure\n");
245 result = TEST_RESULT_FAIL;
248 for (i = 0; i < 200; i++) {
249 found = arraybase_getunitbyindex(&array, i, (VP)&val);
252 printf("arraybase_getunitbyindex not found failure\n");
253 result = TEST_RESULT_FAIL;
256 printf("arraybase_getunitbyindex unexpected value failure: %d:%d\n", i, *val);
257 result = TEST_RESULT_FAIL;
260 if (found != False) {
261 printf("arraybase_getunitbyindex found failure\n");
262 result = TEST_RESULT_FAIL;
267 arraybase_finalize(&array);
276 } test_array_dummydata;
278 LOCAL TEST_RESULT test_array_7()
282 test_array_dummydata val, *val2;
283 TEST_RESULT result = TEST_RESULT_PASS;
286 err = arraybase_initialize(&array, sizeof(test_array_dummydata), 100);
288 return TEST_RESULT_FAIL;
291 for (i = 0; i < 100; i++) {
295 err = arraybase_appendunit(&array, (VP)&val);
297 printf("arraybase_appendunit failure\n");
298 result = TEST_RESULT_FAIL;
301 for (i = 0; i < 100; i++) {
302 found = arraybase_getunitbyindex(&array, i, (VP)&val2);
304 printf("arraybase_getunitbyindex not found failure\n");
305 result = TEST_RESULT_FAIL;
307 if ((val2->a != 100)||(val2->b != i + 1234)||(val2->c != i % 23)) {
308 printf("arraybase_getunitbyindex unexpected value failure: %d\n", i);
309 result = TEST_RESULT_FAIL;
313 arraybase_finalize(&array);
318 LOCAL TEST_RESULT test_array_8()
322 test_array_dummydata val, *val2;
323 TEST_RESULT result = TEST_RESULT_PASS;
326 err = arraybase_initialize(&array, sizeof(test_array_dummydata), 100);
328 return TEST_RESULT_FAIL;
331 for (i = 0; i < 200; i++) {
335 err = arraybase_appendunit(&array, (VP)&val);
337 printf("arraybase_appendunit failure\n");
338 result = TEST_RESULT_FAIL;
341 for (i = 0; i < 200; i++) {
342 found = arraybase_getunitbyindex(&array, i, (VP)&val2);
344 printf("arraybase_getunitbyindex not found failure\n");
345 result = TEST_RESULT_FAIL;
347 if ((val2->a != 100)||(val2->b != i + 1234)||(val2->c != i % 23)) {
348 printf("arraybase_getunitbyindex unexpected value failure: %d\n", i);
349 result = TEST_RESULT_FAIL;
353 arraybase_finalize(&array);
358 LOCAL TEST_RESULT test_array_9()
362 test_array_dummydata val, *val2;
363 TEST_RESULT result = TEST_RESULT_PASS;
366 err = arraybase_initialize(&array, sizeof(test_array_dummydata), 100);
368 return TEST_RESULT_FAIL;
371 for (i = 0; i < 2000; i++) {
375 err = arraybase_appendunit(&array, (VP)&val);
377 printf("arraybase_appendunit failure\n");
378 result = TEST_RESULT_FAIL;
381 for (i = 0; i < 2000; i++) {
382 found = arraybase_getunitbyindex(&array, i, (VP)&val2);
384 printf("arraybase_getunitbyindex not found failure\n");
385 result = TEST_RESULT_FAIL;
387 if ((val2->a != 100)||(val2->b != i + 1234)||(val2->c != i % 23)) {
388 printf("arraybase_getunitbyindex unexpected value failure: %d\n", i);
389 result = TEST_RESULT_FAIL;
393 arraybase_finalize(&array);
398 LOCAL TEST_RESULT test_array_10()
402 test_array_dummydata val, *val2;
403 TEST_RESULT result = TEST_RESULT_PASS;
406 err = arraybase_initialize(&array, sizeof(test_array_dummydata), 100);
408 return TEST_RESULT_FAIL;
411 for (i = 0; i < 100; i++) {
415 err = arraybase_appendunit(&array, (VP)&val);
417 printf("arraybase_appendunit failure\n");
418 result = TEST_RESULT_FAIL;
421 for (i = 0; i < 200; i++) {
422 found = arraybase_getunitbyindex(&array, i, (VP)&val2);
425 printf("arraybase_getunitbyindex not found failure\n");
426 result = TEST_RESULT_FAIL;
428 if ((val2->a != 100)||(val2->b != i + 1234)||(val2->c != i % 23)) {
429 printf("arraybase_getunitbyindex unexpected value failure: %d\n", i);
430 result = TEST_RESULT_FAIL;
433 if (found != False) {
434 printf("arraybase_getunitbyindex found failure\n");
435 result = TEST_RESULT_FAIL;
440 arraybase_finalize(&array);
445 LOCAL TEST_RESULT test_array_11()
449 test_array_dummydata val, *val2;
450 TEST_RESULT result = TEST_RESULT_PASS;
453 err = arraybase_initialize(&array, sizeof(test_array_dummydata), 100);
455 return TEST_RESULT_FAIL;
458 for (i = 0; i < 50; i++) {
462 err = arraybase_appendunit(&array, (VP)&val);
464 printf("arraybase_appendunit failure\n");
465 result = TEST_RESULT_FAIL;
468 for (i = 0; i < 200; i++) {
469 found = arraybase_getunitbyindex(&array, i, (VP)&val2);
472 printf("arraybase_getunitbyindex not found failure\n");
473 result = TEST_RESULT_FAIL;
475 if ((val2->a != 100)||(val2->b != i + 1234)||(val2->c != i % 23)) {
476 printf("arraybase_getunitbyindex unexpected value failure: %d\n", i);
477 result = TEST_RESULT_FAIL;
480 if (found != False) {
481 printf("arraybase_getunitbyindex found failure\n");
482 result = TEST_RESULT_FAIL;
487 arraybase_finalize(&array);
492 LOCAL TEST_RESULT test_array_12()
496 test_array_dummydata val, *val2;
497 TEST_RESULT result = TEST_RESULT_PASS;
500 err = arraybase_initialize(&array, sizeof(test_array_dummydata), 100);
502 return TEST_RESULT_FAIL;
505 for (i = 0; i < 150; i++) {
509 err = arraybase_appendunit(&array, (VP)&val);
511 printf("arraybase_appendunit failure\n");
512 result = TEST_RESULT_FAIL;
515 for (i = 0; i < 200; i++) {
516 found = arraybase_getunitbyindex(&array, i, (VP)&val2);
519 printf("arraybase_getunitbyindex not found failure\n");
520 result = TEST_RESULT_FAIL;
522 if ((val2->a != 100)||(val2->b != i + 1234)||(val2->c != i % 23)) {
523 printf("arraybase_getunitbyindex unexpected value failure: %d\n", i);
524 result = TEST_RESULT_FAIL;
527 if (found != False) {
528 printf("arraybase_getunitbyindex found failure\n");
529 result = TEST_RESULT_FAIL;
534 arraybase_finalize(&array);
539 LOCAL TEST_RESULT test_array_truncate_base(W denom, W testnum, W truncate, W checklen)
543 test_array_dummydata val, *val2;
544 TEST_RESULT result = TEST_RESULT_PASS;
547 err = arraybase_initialize(&array, sizeof(test_array_dummydata), denom);
549 return TEST_RESULT_FAIL;
552 for (i = 0; i < testnum; i++) {
556 err = arraybase_appendunit(&array, (VP)&val);
558 printf("arraybase_appendunit failure\n");
559 result = TEST_RESULT_FAIL;
563 arraybase_truncate(&array, truncate);
565 if (truncate > testnum) {
571 for (i = 0; i < checklen; i++) {
572 found = arraybase_getunitbyindex(&array, i, (VP)&val2);
575 printf("arraybase_getunitbyindex not found failure\n");
576 result = TEST_RESULT_FAIL;
578 if ((val2->a != 100)||(val2->b != i + 1234)||(val2->c != i % 23)) {
579 printf("arraybase_getunitbyindex unexpected value failure: %d\n", i);
580 result = TEST_RESULT_FAIL;
583 if (found != False) {
584 printf("arraybase_getunitbyindex found failure\n");
585 result = TEST_RESULT_FAIL;
590 arraybase_finalize(&array);
595 LOCAL TEST_RESULT test_array_13()
597 return test_array_truncate_base(100, 100, 0, 200);
600 LOCAL TEST_RESULT test_array_14()
602 return test_array_truncate_base(100, 100, 50, 200);
605 LOCAL TEST_RESULT test_array_15()
607 return test_array_truncate_base(100, 100, 100, 200);
610 LOCAL TEST_RESULT test_array_16()
612 return test_array_truncate_base(100, 100, 200, 200);
615 LOCAL TEST_RESULT test_array_17()
617 return test_array_truncate_base(50, 100, 00, 200);
620 LOCAL TEST_RESULT test_array_18()
622 return test_array_truncate_base(50, 100, 50, 200);
625 LOCAL TEST_RESULT test_array_19()
627 return test_array_truncate_base(50, 100, 100, 200);
630 LOCAL TEST_RESULT test_array_20()
632 return test_array_truncate_base(50, 100, 200, 200);
635 LOCAL TEST_RESULT test_array_21()
637 return test_array_truncate_base(100, 500, 0, 1000);
640 LOCAL TEST_RESULT test_array_22()
642 return test_array_truncate_base(100, 500, 50, 1000);
645 LOCAL TEST_RESULT test_array_23()
647 return test_array_truncate_base(100, 500, 250, 1000);
650 LOCAL TEST_RESULT test_array_24()
652 return test_array_truncate_base(100, 500, 500, 1000);
655 LOCAL TEST_RESULT test_array_25()
657 return test_array_truncate_base(100, 500, 1000, 1000);
660 LOCAL TEST_RESULT test_array_truncate_2_base(W denom, W testnum1, W truncate, W testnum2, W checklen)
664 test_array_dummydata val, *val2;
665 TEST_RESULT result = TEST_RESULT_PASS;
668 err = arraybase_initialize(&array, sizeof(test_array_dummydata), denom);
670 return TEST_RESULT_FAIL;
673 for (i = 0; i < testnum1; i++) {
677 err = arraybase_appendunit(&array, (VP)&val);
679 printf("arraybase_appendunit failure\n");
680 result = TEST_RESULT_FAIL;
684 arraybase_truncate(&array, truncate);
686 if (truncate > testnum1) {
692 for (i = arraylen; i < arraylen + testnum2; i++) {
696 err = arraybase_appendunit(&array, (VP)&val);
698 printf("arraybase_appendunit failure\n");
699 result = TEST_RESULT_FAIL;
703 arraylen += testnum2;
705 for (i = 0; i < checklen; i++) {
706 found = arraybase_getunitbyindex(&array, i, (VP)&val2);
709 printf("arraybase_getunitbyindex not found failure\n");
710 result = TEST_RESULT_FAIL;
712 if ((val2->a != 100)||(val2->b != i + 1234)||(val2->c != i % 23)) {
713 printf("arraybase_getunitbyindex unexpected value failure: %d\n", i);
714 result = TEST_RESULT_FAIL;
717 if (found != False) {
718 printf("arraybase_getunitbyindex found failure\n");
719 result = TEST_RESULT_FAIL;
724 arraybase_finalize(&array);
729 LOCAL TEST_RESULT test_array_26()
731 return test_array_truncate_2_base(100, 100, 0, 50, 200);
734 LOCAL TEST_RESULT test_array_27()
736 return test_array_truncate_2_base(100, 100, 50, 50, 200);
739 LOCAL TEST_RESULT test_array_28()
741 return test_array_truncate_2_base(100, 100, 100, 50, 200);
744 LOCAL TEST_RESULT test_array_29()
746 return test_array_truncate_2_base(100, 100, 200, 50, 200);
749 LOCAL TEST_RESULT test_array_30()
751 return test_array_truncate_2_base(50, 100, 00, 100, 200);
754 LOCAL TEST_RESULT test_array_31()
756 return test_array_truncate_2_base(50, 100, 50, 100, 200);
759 LOCAL TEST_RESULT test_array_32()
761 return test_array_truncate_2_base(50, 100, 100, 100, 200);
764 LOCAL TEST_RESULT test_array_33()
766 return test_array_truncate_2_base(50, 100, 200, 100, 200);
769 LOCAL TEST_RESULT test_array_34()
771 return test_array_truncate_2_base(100, 500, 0, 100, 1000);
774 LOCAL TEST_RESULT test_array_35()
776 return test_array_truncate_2_base(100, 500, 50, 100, 1000);
779 LOCAL TEST_RESULT test_array_36()
781 return test_array_truncate_2_base(100, 500, 250, 100, 1000);
784 LOCAL TEST_RESULT test_array_37()
786 return test_array_truncate_2_base(100, 500, 500, 100, 1000);
789 LOCAL TEST_RESULT test_array_38()
791 return test_array_truncate_2_base(100, 500, 1000, 100, 1000);
794 LOCAL VOID test_array_printresult(TEST_RESULT (*proc)(), B *test_name)
798 printf("test_array: %s\n", test_name);
799 printf("---------------------------------------------\n");
801 if (result == TEST_RESULT_PASS) {
802 printf("--pass---------------------------------------\n");
804 printf("--fail---------------------------------------\n");
806 printf("---------------------------------------------\n");
809 EXPORT VOID test_array_main()
811 test_array_printresult(test_array_1, "test_array_1");
812 test_array_printresult(test_array_2, "test_array_2");
813 test_array_printresult(test_array_3, "test_array_3");
814 test_array_printresult(test_array_4, "test_array_4");
815 test_array_printresult(test_array_5, "test_array_5");
816 test_array_printresult(test_array_6, "test_array_6");
817 test_array_printresult(test_array_7, "test_array_7");
818 test_array_printresult(test_array_8, "test_array_8");
819 test_array_printresult(test_array_9, "test_array_9");
820 test_array_printresult(test_array_10, "test_array_10");
821 test_array_printresult(test_array_11, "test_array_11");
822 test_array_printresult(test_array_12, "test_array_12");
823 test_array_printresult(test_array_13, "test_array_13");
824 test_array_printresult(test_array_14, "test_array_14");
825 test_array_printresult(test_array_15, "test_array_15");
826 test_array_printresult(test_array_16, "test_array_16");
827 test_array_printresult(test_array_17, "test_array_17");
828 test_array_printresult(test_array_18, "test_array_18");
829 test_array_printresult(test_array_19, "test_array_19");
830 test_array_printresult(test_array_20, "test_array_20");
831 test_array_printresult(test_array_21, "test_array_21");
832 test_array_printresult(test_array_22, "test_array_22");
833 test_array_printresult(test_array_23, "test_array_23");
834 test_array_printresult(test_array_24, "test_array_24");
835 test_array_printresult(test_array_25, "test_array_25");
836 test_array_printresult(test_array_26, "test_array_26");
837 test_array_printresult(test_array_27, "test_array_27");
838 test_array_printresult(test_array_28, "test_array_28");
839 test_array_printresult(test_array_29, "test_array_29");
840 test_array_printresult(test_array_30, "test_array_30");
841 test_array_printresult(test_array_31, "test_array_31");
842 test_array_printresult(test_array_32, "test_array_32");
843 test_array_printresult(test_array_33, "test_array_33");
844 test_array_printresult(test_array_34, "test_array_34");
845 test_array_printresult(test_array_35, "test_array_35");
846 test_array_printresult(test_array_36, "test_array_36");
847 test_array_printresult(test_array_37, "test_array_37");
848 test_array_printresult(test_array_38, "test_array_38");