4 * Copyright (c) 2013-2014 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
29 #include "tadfragment.h"
36 #include "tadlangcode.h"
37 #include "tadsegment.h"
39 #include <unittest_driver.h>
45 } test_tadfragment_pushback_t;
47 LOCAL UNITTEST_RESULT test_tadfragment_pushback_common(test_tadfragment_pushback_t *testdata)
49 tadfragment_t fragment;
51 UNITTEST_RESULT result = UNITTEST_RESULT_PASS;
53 err = tadfragment_initialize(&fragment);
55 return UNITTEST_RESULT_FAIL;
58 err = tadfragment_pushback(&fragment, (UB*)testdata->input, testdata->input_len);
60 printf("tadfragment_pushback error\n");
61 result = UNITTEST_RESULT_FAIL;
64 len = tadfragment_getsegmentlength(&fragment);
65 if (len != testdata->segment_num) {
66 printf("tadfragment_getsegmentlength fail: expected = %d, result = %d\n", testdata->segment_num, len);
67 result = UNITTEST_RESULT_FAIL;
70 len = tadfragment_getbufferlength(&fragment);
71 if (len != testdata->input_len) {
72 printf("tadfragment_getbufferlength fail: expected = %d, result = %d\n", testdata->input_len, len);
73 result = UNITTEST_RESULT_FAIL;
76 tadfragment_finalize(&fragment);
81 LOCAL UNITTEST_RESULT test_tadfragment_pushback_1()
83 TC tad[] = {TK_A, TK_B, TK_C};
84 W tad_len = sizeof(tad);
86 test_tadfragment_pushback_t testdata = {
89 return test_tadfragment_pushback_common(&testdata);
92 LOCAL UNITTEST_RESULT test_tadfragment_pushback_2()
94 TC tad[] = {TK_A, TK_B, TK_C, TK_D};
95 W tad_len = sizeof(tad);
97 test_tadfragment_pushback_t testdata = {
100 return test_tadfragment_pushback_common(&testdata);
103 LOCAL UNITTEST_RESULT test_tadfragment_pushback_3()
105 TC tad[] = {TK_A, 0xFF80, 0x0002, 0x0000, TK_C};
106 W tad_len = sizeof(tad);
108 test_tadfragment_pushback_t testdata = {
109 tad, tad_len, seg_len
111 return test_tadfragment_pushback_common(&testdata);
114 LOCAL UNITTEST_RESULT test_tadfragment_pushback_4()
116 TC tad[] = {TK_A, TK_B, 0xFE21};
117 W tad_len = sizeof(tad);
119 test_tadfragment_pushback_t testdata = {
120 tad, tad_len, seg_len
122 return test_tadfragment_pushback_common(&testdata);
125 LOCAL UNITTEST_RESULT test_tadfragment_pushback_5()
127 TC tad[] = {TK_A, TK_B, 0xFE21, TK_D};
128 W tad_len = sizeof(tad);
130 test_tadfragment_pushback_t testdata = {
131 tad, tad_len, seg_len
133 return test_tadfragment_pushback_common(&testdata);
136 LOCAL UNITTEST_RESULT test_tadfragment_pushback_6()
138 TC tad[] = {TK_A, TK_B, 0xFEFE, 0xFE21};
139 W tad_len = sizeof(tad);
141 test_tadfragment_pushback_t testdata = {
142 tad, tad_len, seg_len
144 return test_tadfragment_pushback_common(&testdata);
147 LOCAL UNITTEST_RESULT test_tadfragment_pushback_7()
149 TC tad[] = {TK_A, TK_B, 0xFEFE, 0xFE21, TK_C};
150 W tad_len = sizeof(tad);
152 test_tadfragment_pushback_t testdata = {
153 tad, tad_len, seg_len
155 return test_tadfragment_pushback_common(&testdata);
163 } test_tadfragment_popback_t;
165 LOCAL UNITTEST_RESULT test_tadfragment_popback_common(test_tadfragment_popback_t *testdata)
167 tadfragment_t fragment;
169 UNITTEST_RESULT result = UNITTEST_RESULT_PASS;
171 err = tadfragment_initialize(&fragment);
173 return UNITTEST_RESULT_FAIL;
176 err = tadfragment_pushback(&fragment, (UB*)testdata->input, testdata->input_len);
178 printf("tadfragment_pushback error\n");
179 result = UNITTEST_RESULT_FAIL;
181 err = tadfragment_popback(&fragment);
183 printf("tadfragment_popback error\n");
184 result = UNITTEST_RESULT_FAIL;
187 len = tadfragment_getsegmentlength(&fragment);
188 if (len != testdata->segment_num) {
189 printf("tadfragment_getsegmentlength fail: expected = %d, result = %d\n", testdata->segment_num, len);
190 result = UNITTEST_RESULT_FAIL;
193 len = tadfragment_getbufferlength(&fragment);
194 if (len != testdata->expected_len) {
195 printf("tadfragment_getbufferlength fail: expected = %d, result = %d\n", testdata->expected_len, len);
196 result = UNITTEST_RESULT_FAIL;
199 tadfragment_finalize(&fragment);
204 LOCAL UNITTEST_RESULT test_tadfragment_popback_1()
206 TC tad[] = {TK_A, TK_B, TK_C};
207 W tad_len = sizeof(tad);
208 W expected_len = tad_len - sizeof(TC);
210 test_tadfragment_popback_t testdata = {
211 tad, tad_len, seg_len, expected_len
213 return test_tadfragment_popback_common(&testdata);
216 LOCAL UNITTEST_RESULT test_tadfragment_popback_2()
218 TC tad[] = {TK_A, TK_B, TK_C, TK_D};
219 W tad_len = sizeof(tad);
220 W expected_len = tad_len - sizeof(TC);
222 test_tadfragment_popback_t testdata = {
223 tad, tad_len, seg_len, expected_len
225 return test_tadfragment_popback_common(&testdata);
228 LOCAL UNITTEST_RESULT test_tadfragment_popback_3()
230 TC tad[] = {TK_A, 0xFF80, 0x0002, 0x0000, TK_C};
231 W tad_len = sizeof(tad);
232 W expected_len = tad_len - sizeof(TC);
234 test_tadfragment_popback_t testdata = {
235 tad, tad_len, seg_len, expected_len
237 return test_tadfragment_popback_common(&testdata);
240 LOCAL UNITTEST_RESULT test_tadfragment_popback_4()
242 TC tad[] = {TK_A, TK_B, 0xFF80, 0x0002, 0x0000};
243 W tad_len = sizeof(tad);
244 W expected_len = tad_len - sizeof(TC)*3;
246 test_tadfragment_popback_t testdata = {
247 tad, tad_len, seg_len, expected_len
249 return test_tadfragment_popback_common(&testdata);
252 LOCAL UNITTEST_RESULT test_tadfragment_popback_5()
254 TC tad[] = {TK_A, TK_B, 0xFE21};
255 W tad_len = sizeof(tad);
256 W expected_len = tad_len - sizeof(TC);
258 test_tadfragment_popback_t testdata = {
259 tad, tad_len, seg_len, expected_len
261 return test_tadfragment_popback_common(&testdata);
264 LOCAL UNITTEST_RESULT test_tadfragment_popback_6()
266 TC tad[] = {TK_A, TK_B, 0xFE21, TK_D};
267 W tad_len = sizeof(tad);
268 W expected_len = tad_len - sizeof(TC);
270 test_tadfragment_popback_t testdata = {
271 tad, tad_len, seg_len, expected_len
273 return test_tadfragment_popback_common(&testdata);
276 LOCAL UNITTEST_RESULT test_tadfragment_popback_7()
278 TC tad[] = {TK_A, TK_B, 0xFEFE, 0xFE21};
279 W tad_len = sizeof(tad);
280 W expected_len = tad_len - sizeof(TC)*2;
282 test_tadfragment_popback_t testdata = {
283 tad, tad_len, seg_len, expected_len
285 return test_tadfragment_popback_common(&testdata);
288 LOCAL UNITTEST_RESULT test_tadfragment_popback_8()
290 TC tad[] = {TK_A, TK_B, 0xFEFE, 0xFE21, TK_C};
291 W tad_len = sizeof(tad);
292 W expected_len = tad_len - sizeof(TC);
294 test_tadfragment_popback_t testdata = {
295 tad, tad_len, seg_len, expected_len
297 return test_tadfragment_popback_common(&testdata);
306 W expected_segment_num;
307 } test_tadfragment_truncate_t;
309 LOCAL UNITTEST_RESULT test_tadfragment_truncate_common(test_tadfragment_truncate_t *testdata)
311 tadfragment_t fragment;
314 UNITTEST_RESULT result = UNITTEST_RESULT_PASS;
316 err = tadfragment_initialize(&fragment);
318 return UNITTEST_RESULT_FAIL;
321 err = tadfragment_pushback(&fragment, (UB*)testdata->original, testdata->original_len);
323 printf("tadfragment_pushback error\n");
324 result = UNITTEST_RESULT_FAIL;
327 tadfragment_truncate(&fragment, testdata->truncate_size);
329 len = tadfragment_getsegmentlength(&fragment);
330 if (len != testdata->expected_segment_num) {
331 printf("tadfragment_getsegmentlength fail: expected = %d, result = %d\n", testdata->expected_segment_num, len);
332 result = UNITTEST_RESULT_FAIL;
335 len = tadfragment_getbufferlength(&fragment);
336 if (len != testdata->expected_len) {
337 printf("tadfragment_getbufferlength fail: expected = %d, result = %d\n", testdata->expected_len, len);
338 result = UNITTEST_RESULT_FAIL;
341 buf = tadfragment_getbuffer(&fragment);
342 if (memcmp(buf, testdata->expected, testdata->expected_len) != 0) {
343 printf("tadfragment_getbuffer fail\n");
346 for (i = 0; i < testdata->expected_len; i++) {
347 printf("%02x, %02x\n", buf[i], ((UB*)testdata->expected)[i]);
350 result = UNITTEST_RESULT_FAIL;
353 tadfragment_finalize(&fragment);
358 LOCAL UNITTEST_RESULT test_tadfragment_truncate_1()
360 TC original[] = {TK_A, TK_B, TK_C};
361 W original_len = sizeof(original);
364 W expected_len = sizeof(expected);
365 W expected_segment_num = 0;
366 test_tadfragment_truncate_t testdata = {
367 original, original_len,
369 expected, expected_len, expected_segment_num
371 return test_tadfragment_truncate_common(&testdata);
374 LOCAL UNITTEST_RESULT test_tadfragment_truncate_2()
376 TC original[] = {TK_A, TK_B, TK_C};
377 W original_len = sizeof(original);
379 TC expected[] = {TK_A};
380 W expected_len = sizeof(expected);
381 W expected_segment_num = 1;
382 test_tadfragment_truncate_t testdata = {
383 original, original_len,
385 expected, expected_len, expected_segment_num
387 return test_tadfragment_truncate_common(&testdata);
390 LOCAL UNITTEST_RESULT test_tadfragment_truncate_3()
392 TC original[] = {TK_A, TK_B, TK_C};
393 W original_len = sizeof(original);
395 TC expected[] = {TK_A, TK_B};
396 W expected_len = sizeof(expected);
397 W expected_segment_num = 2;
398 test_tadfragment_truncate_t testdata = {
399 original, original_len,
401 expected, expected_len, expected_segment_num
403 return test_tadfragment_truncate_common(&testdata);
406 LOCAL UNITTEST_RESULT test_tadfragment_truncate_4()
408 TC original[] = {TK_A, TK_B, TK_C};
409 W original_len = sizeof(original);
411 TC expected[] = {TK_A, TK_B, TK_C};
412 W expected_len = sizeof(expected);
413 W expected_segment_num = 3;
414 test_tadfragment_truncate_t testdata = {
415 original, original_len,
417 expected, expected_len, expected_segment_num
419 return test_tadfragment_truncate_common(&testdata);
422 LOCAL UNITTEST_RESULT test_tadfragment_truncate_5()
424 TC original[] = {TK_A, TK_B, TK_C};
425 W original_len = sizeof(original);
427 TC expected[] = {TK_A, TK_B, TK_C};
428 W expected_len = sizeof(expected);
429 W expected_segment_num = 3;
430 test_tadfragment_truncate_t testdata = {
431 original, original_len,
433 expected, expected_len, expected_segment_num
435 return test_tadfragment_truncate_common(&testdata);
446 W expected_segment_num;
447 } test_tadfragment_cursor_insert_t;
449 LOCAL UNITTEST_RESULT test_tadfragment_cursor_insert_common(test_tadfragment_cursor_insert_t *testdata)
451 tadfragment_t fragment;
452 tadfragment_cursor_t cursor;
455 UNITTEST_RESULT result = UNITTEST_RESULT_PASS;
457 err = tadfragment_initialize(&fragment);
459 return UNITTEST_RESULT_FAIL;
462 err = tadfragment_pushback(&fragment, (UB*)testdata->original, testdata->original_len);
464 printf("tadfragment_pushback error\n");
465 result = UNITTEST_RESULT_FAIL;
468 tadfragment_cursor_initialize(&cursor, &fragment);
470 err = tadfragment_cursor_move(&cursor, testdata->insert_pos);
472 printf("tadfragment_cursor_move error\n");
473 result = UNITTEST_RESULT_FAIL;
475 err = tadfragment_cursor_insert(&cursor, (UB*)testdata->insert, testdata->insert_len);
477 printf("tadfragment_cursor_insert error\n");
478 result = UNITTEST_RESULT_FAIL;
481 tadfragment_cursor_finalize(&cursor);
483 len = tadfragment_getsegmentlength(&fragment);
484 if (len != testdata->expected_segment_num) {
485 printf("tadfragment_getsegmentlength fail: expected = %d, result = %d\n", testdata->expected_segment_num, len);
486 result = UNITTEST_RESULT_FAIL;
489 len = tadfragment_getbufferlength(&fragment);
490 if (len != testdata->expected_len) {
491 printf("tadfragment_getbufferlength fail: expected = %d, result = %d\n", testdata->expected_len, len);
492 result = UNITTEST_RESULT_FAIL;
495 buf = tadfragment_getbuffer(&fragment);
496 if (memcmp(buf, testdata->expected, testdata->expected_len) != 0) {
497 printf("tadfragment_getbuffer fail\n");
500 for (i = 0; i < testdata->expected_len; i++) {
501 printf("%02x, %02x\n", buf[i], ((UB*)testdata->expected)[i]);
504 result = UNITTEST_RESULT_FAIL;
507 tadfragment_finalize(&fragment);
512 LOCAL UNITTEST_RESULT test_tadfragment_cursor_insert_1()
514 TC original[] = {TK_A, TK_B, TK_C};
515 W original_len = sizeof(original);
516 TC insert[] = {TK_D, TK_E};
517 W insert_len = sizeof(insert);
519 TC expected[] = {TK_D, TK_E, TK_A, TK_B, TK_C};
520 W expected_len = sizeof(expected);
521 W expected_segment_num = 5;
522 test_tadfragment_cursor_insert_t testdata = {
523 original, original_len,
524 insert, insert_len, insert_pos,
525 expected, expected_len, expected_segment_num
527 return test_tadfragment_cursor_insert_common(&testdata);
530 LOCAL UNITTEST_RESULT test_tadfragment_cursor_insert_2()
532 TC original[] = {TK_A, TK_B, TK_C};
533 W original_len = sizeof(original);
534 TC insert[] = {TK_D, TK_E};
535 W insert_len = sizeof(insert);
537 TC expected[] = {TK_A, TK_D, TK_E, TK_B, TK_C};
538 W expected_len = sizeof(expected);
539 W expected_segment_num = 5;
540 test_tadfragment_cursor_insert_t testdata = {
541 original, original_len,
542 insert, insert_len, insert_pos,
543 expected, expected_len, expected_segment_num
545 return test_tadfragment_cursor_insert_common(&testdata);
548 LOCAL UNITTEST_RESULT test_tadfragment_cursor_insert_3()
550 TC original[] = {TK_A, TK_B, TK_C};
551 W original_len = sizeof(original);
552 TC insert[] = {TK_D, TK_E};
553 W insert_len = sizeof(insert);
555 TC expected[] = {TK_A, TK_B, TK_D, TK_E, TK_C};
556 W expected_len = sizeof(expected);
557 W expected_segment_num = 5;
558 test_tadfragment_cursor_insert_t testdata = {
559 original, original_len,
560 insert, insert_len, insert_pos,
561 expected, expected_len, expected_segment_num
563 return test_tadfragment_cursor_insert_common(&testdata);
566 LOCAL UNITTEST_RESULT test_tadfragment_cursor_insert_4()
568 TC original[] = {TK_A, TK_B, TK_C};
569 W original_len = sizeof(original);
570 TC insert[] = {TK_D, TK_E};
571 W insert_len = sizeof(insert);
573 TC expected[] = {TK_A, TK_B, TK_C, TK_D, TK_E};
574 W expected_len = sizeof(expected);
575 W expected_segment_num = 5;
576 test_tadfragment_cursor_insert_t testdata = {
577 original, original_len,
578 insert, insert_len, insert_pos,
579 expected, expected_len, expected_segment_num
581 return test_tadfragment_cursor_insert_common(&testdata);
591 W expected_segment_num;
592 } test_tadfragment_cursor_insertlang_t;
594 LOCAL UNITTEST_RESULT test_tadfragment_cursor_insertlang_common(test_tadfragment_cursor_insertlang_t *testdata)
596 tadfragment_t fragment;
597 tadfragment_cursor_t cursor;
600 UNITTEST_RESULT result = UNITTEST_RESULT_PASS;
602 err = tadfragment_initialize(&fragment);
604 return UNITTEST_RESULT_FAIL;
607 err = tadfragment_pushback(&fragment, (UB*)testdata->original, testdata->original_len);
609 printf("tadfragment_pushback error\n");
610 result = UNITTEST_RESULT_FAIL;
613 tadfragment_cursor_initialize(&cursor, &fragment);
615 err = tadfragment_cursor_move(&cursor, testdata->insert_pos);
617 printf("tadfragment_cursor_move error\n");
618 result = UNITTEST_RESULT_FAIL;
620 err = tadfragment_cursor_insertlang(&cursor, testdata->insert);
622 printf("tadfragment_cursor_insertlang error\n");
623 result = UNITTEST_RESULT_FAIL;
626 tadfragment_cursor_finalize(&cursor);
628 len = tadfragment_getsegmentlength(&fragment);
629 if (len != testdata->expected_segment_num) {
630 printf("tadfragment_getsegmentlength fail: expected = %d, result = %d\n", testdata->expected_segment_num, len);
631 result = UNITTEST_RESULT_FAIL;
634 len = tadfragment_getbufferlength(&fragment);
635 if (len != testdata->expected_len) {
636 printf("tadfragment_getbufferlength fail: expected = %d, result = %d\n", testdata->expected_len, len);
637 result = UNITTEST_RESULT_FAIL;
640 buf = tadfragment_getbuffer(&fragment);
641 if (memcmp(buf, testdata->expected, testdata->expected_len) != 0) {
642 printf("tadfragment_getbuffer fail\n");
645 for (i = 0; i < testdata->expected_len; i++) {
646 printf("%02x, %02x\n", buf[i], ((UB*)testdata->expected)[i]);
649 result = UNITTEST_RESULT_FAIL;
652 tadfragment_finalize(&fragment);
657 LOCAL UNITTEST_RESULT test_tadfragment_cursor_insertlang_1()
659 TC original[] = {TK_A, TK_B, TK_C};
660 W original_len = sizeof(original);
661 tadlangcode insert = {0, 0x21};
663 TC expected[] = {0xFE21, TK_A, TK_B, TK_C};
664 W expected_len = sizeof(expected);
665 W expected_segment_num = 4;
666 test_tadfragment_cursor_insertlang_t testdata = {
667 original, original_len,
669 expected, expected_len, expected_segment_num
671 return test_tadfragment_cursor_insertlang_common(&testdata);
674 LOCAL UNITTEST_RESULT test_tadfragment_cursor_insertlang_2()
676 TC original[] = {TK_A, TK_B, TK_C};
677 W original_len = sizeof(original);
678 tadlangcode insert = {0, 0x21};
680 TC expected[] = {TK_A, 0xFE21, TK_B, TK_C};
681 W expected_len = sizeof(expected);
682 W expected_segment_num = 4;
683 test_tadfragment_cursor_insertlang_t testdata = {
684 original, original_len,
686 expected, expected_len, expected_segment_num
688 return test_tadfragment_cursor_insertlang_common(&testdata);
691 LOCAL UNITTEST_RESULT test_tadfragment_cursor_insertlang_3()
693 TC original[] = {TK_A, TK_B, TK_C};
694 W original_len = sizeof(original);
695 tadlangcode insert = {0, 0x21};
697 TC expected[] = {TK_A, TK_B, 0xFE21, TK_C};
698 W expected_len = sizeof(expected);
699 W expected_segment_num = 4;
700 test_tadfragment_cursor_insertlang_t testdata = {
701 original, original_len,
703 expected, expected_len, expected_segment_num
705 return test_tadfragment_cursor_insertlang_common(&testdata);
709 LOCAL UNITTEST_RESULT test_tadfragment_cursor_insertlang_4()
711 TC original[] = {TK_A, TK_B, TK_C};
712 W original_len = sizeof(original);
713 tadlangcode insert = {0, 0x21};
715 TC expected[] = {TK_A, TK_B, TK_C, 0xFE21};
716 W expected_len = sizeof(expected);
717 W expected_segment_num = 4;
718 test_tadfragment_cursor_insertlang_t testdata = {
719 original, original_len,
721 expected, expected_len, expected_segment_num
723 return test_tadfragment_cursor_insertlang_common(&testdata);
726 LOCAL UNITTEST_RESULT test_tadfragment_cursor_insertlang_5()
728 TC original[] = {TK_A, TK_B, TK_C};
729 W original_len = sizeof(original);
730 tadlangcode insert = {2, 0x21};
732 TC expected[] = {TK_A, 0xFEFE, 0xFE21, TK_B, TK_C};
733 W expected_len = sizeof(expected);
734 W expected_segment_num = 4;
735 test_tadfragment_cursor_insertlang_t testdata = {
736 original, original_len,
738 expected, expected_len, expected_segment_num
740 return test_tadfragment_cursor_insertlang_common(&testdata);
747 } test_tadsegment_expected_t;
749 LOCAL Bool test_tadfragment_common_verify_segment(tadsegment *segment, test_tadsegment_expected_t *expected)
753 if (segment->type != expected->type) {
754 printf("segment type fail: expected = %d, result = %d\n", expected->type, segment->type);
757 switch (segment->type) {
758 case TADSEGMENT_TYPE_VARIABLE:
759 if (segment->value.variable.rawlen != expected->len * sizeof(TC)) {
760 printf("segment length fail: expected = %d, result = %d\n", expected->len * sizeof(TC), segment->value.variable.rawlen);
763 if (memcmp(segment->value.variable.raw, expected->data, segment->value.variable.rawlen) != 0) {
764 printf("segment data fail\n");
768 case TADSEGMENT_TYPE_CHARACTOR:
769 if (expected->len != 1) {
770 printf("charactor length fail\n");
772 } else if (segment->value.ch != expected->data[0]) {
773 printf("charactor ch fail\n");
777 case TADSEGMENT_TYPE_LANGCODE:
778 result = tadlangcodecmpTC(expected->data, expected->len, &segment->value.lang);
788 LOCAL Bool test_tadfragment_common_verify_segments(tadfragment_cursor_t *cursor, test_tadsegment_expected_t *expected, W expected_len)
792 Bool result = True, verify;
795 err = tadfragment_cursor_getdata(cursor, &segment);
796 if (i < expected_len) {
798 printf("tadfragment_pushback error\n");
802 verify = test_tadfragment_common_verify_segment(&segment, expected + i);
803 if (verify == False) {
804 printf("segment %d is not expected\n", i);
809 err = tadfragment_cursor_move(cursor, 1);
814 if (i != expected_len) {
815 printf("tadfragment_cursor_move time fail: expected = %d, result = %d\n", expected_len, i);
825 test_tadsegment_expected_t *expected;
827 } test_tadfragment_cursor_getdata_t;
829 LOCAL UNITTEST_RESULT test_tadfragment_cursor_getdata_common(test_tadfragment_cursor_getdata_t *testdata)
831 tadfragment_t fragment;
832 tadfragment_cursor_t cursor;
835 UNITTEST_RESULT result = UNITTEST_RESULT_PASS;
837 err = tadfragment_initialize(&fragment);
839 return UNITTEST_RESULT_FAIL;
842 err = tadfragment_pushback(&fragment, (UB*)testdata->input, testdata->input_len);
844 printf("tadfragment_pushback error\n");
845 result = UNITTEST_RESULT_FAIL;
848 tadfragment_cursor_initialize(&cursor, &fragment);
850 verify = test_tadfragment_common_verify_segments(&cursor, testdata->expected, testdata->expected_len);
851 if (verify == False) {
852 result = UNITTEST_RESULT_FAIL;
855 tadfragment_cursor_finalize(&cursor);
857 tadfragment_finalize(&fragment);
862 LOCAL UNITTEST_RESULT test_tadfragment_cursor_getdata_1()
864 TC input[] = {TK_A, TK_B, TK_C};
865 W input_len = sizeof(input);
866 test_tadsegment_expected_t expected[] = {
867 {TADSEGMENT_TYPE_CHARACTOR, (TC[]){TK_A}, 1},
868 {TADSEGMENT_TYPE_CHARACTOR, (TC[]){TK_B}, 1},
869 {TADSEGMENT_TYPE_CHARACTOR, (TC[]){TK_C}, 1},
872 test_tadfragment_cursor_getdata_t testdata = {
874 expected, expected_len
876 return test_tadfragment_cursor_getdata_common(&testdata);
879 LOCAL UNITTEST_RESULT test_tadfragment_cursor_getdata_2()
881 TC input[] = {TK_A, 0xFF80, 0x0002, 0x0000, TK_C};
882 W input_len = sizeof(input);
883 test_tadsegment_expected_t expected[] = {
884 {TADSEGMENT_TYPE_CHARACTOR, (TC[]){TK_A}, 1},
885 {TADSEGMENT_TYPE_VARIABLE, (TC[]){0xFF80, 0x0002, 0x0000}, 3},
886 {TADSEGMENT_TYPE_CHARACTOR, (TC[]){TK_C}, 1},
889 test_tadfragment_cursor_getdata_t testdata = {
891 expected, expected_len
893 return test_tadfragment_cursor_getdata_common(&testdata);
896 LOCAL UNITTEST_RESULT test_tadfragment_cursor_getdata_3()
898 TC input[] = {TK_A, TK_B, 0xFE21};
899 W input_len = sizeof(input);
900 test_tadsegment_expected_t expected[] = {
901 {TADSEGMENT_TYPE_CHARACTOR, (TC[]){TK_A}, 1},
902 {TADSEGMENT_TYPE_CHARACTOR, (TC[]){TK_B}, 1},
903 {TADSEGMENT_TYPE_LANGCODE, (TC[]){0xFE21}, 1},
906 test_tadfragment_cursor_getdata_t testdata = {
908 expected, expected_len
910 return test_tadfragment_cursor_getdata_common(&testdata);
913 LOCAL UNITTEST_RESULT test_tadfragment_cursor_getdata_4()
915 TC input[] = {TK_A, 0xFEFE, 0xFE21, TK_C};
916 W input_len = sizeof(input);
917 test_tadsegment_expected_t expected[] = {
918 {TADSEGMENT_TYPE_CHARACTOR, (TC[]){TK_A}, 1},
919 {TADSEGMENT_TYPE_LANGCODE, (TC[]){0xFEFE, 0xFE21}, 2},
920 {TADSEGMENT_TYPE_CHARACTOR, (TC[]){TK_C}, 1},
923 test_tadfragment_cursor_getdata_t testdata = {
925 expected, expected_len
927 return test_tadfragment_cursor_getdata_common(&testdata);
935 Bool expected_pos_after_erase_is_end;
936 test_tadsegment_expected_t *expected_pos_after_erase;
937 test_tadsegment_expected_t *expected;
939 } test_tadfragment_cursor_erase_t;
941 LOCAL UNITTEST_RESULT test_tadfragment_cursor_erase_common(test_tadfragment_cursor_erase_t *testdata)
943 tadfragment_t fragment;
944 tadfragment_cursor_t cursor;
948 UNITTEST_RESULT result = UNITTEST_RESULT_PASS;
950 err = tadfragment_initialize(&fragment);
952 return UNITTEST_RESULT_FAIL;
955 err = tadfragment_pushback(&fragment, (UB*)testdata->input, testdata->input_len);
957 printf("tadfragment_pushback error\n");
958 result = UNITTEST_RESULT_FAIL;
961 tadfragment_cursor_initialize(&cursor, &fragment);
962 tadfragment_cursor_move(&cursor, testdata->erase_pos);
963 err = tadfragment_cursor_erase(&cursor, testdata->erase_len);
965 printf("tadfragment_erase error\n");
966 result = UNITTEST_RESULT_FAIL;
968 if (testdata->expected_pos_after_erase_is_end != False) {
969 if (tadfragment_cursor_isend(&cursor) == False) {
970 printf("tadfragment_cursor is not end error\n");
971 result = UNITTEST_RESULT_FAIL;
974 err = tadfragment_cursor_getdata(&cursor, &segment);
976 printf("tadfragment_cursor_getdata error\n");
977 result = UNITTEST_RESULT_FAIL;
979 verify = test_tadfragment_common_verify_segment(&segment, testdata->expected_pos_after_erase);
980 if (verify == False) {
981 printf("tadfragment_cursor_erase position error\n");
982 result = UNITTEST_RESULT_FAIL;
985 tadfragment_cursor_finalize(&cursor);
988 tadfragment_cursor_initialize(&cursor, &fragment);
989 if (test_tadfragment_common_verify_segments(&cursor, testdata->expected, testdata->expected_len) == False) {
990 result = UNITTEST_RESULT_FAIL;
992 tadfragment_cursor_finalize(&cursor);
994 tadfragment_finalize(&fragment);
999 LOCAL UNITTEST_RESULT test_tadfragment_cursor_erase_1()
1001 TC input[] = {TK_A, 0xFF80, 0x0002, 0x0000, TK_C};
1002 W input_len = sizeof(input);
1003 Bool expected_pos_after_erase_is_end = False;
1004 test_tadsegment_expected_t expected_pos_after_erase = {
1005 TADSEGMENT_TYPE_VARIABLE,
1006 (TC[]){0xFF80, 0x0002, 0x0000},
1011 test_tadsegment_expected_t expected[] = {
1012 {TADSEGMENT_TYPE_VARIABLE, (TC[]){0xFF80, 0x0002, 0x0000}, 3},
1013 {TADSEGMENT_TYPE_CHARACTOR, (TC[]){TK_C}, 1},
1016 test_tadfragment_cursor_erase_t testdata = {
1018 erase_pos, erase_len,
1019 expected_pos_after_erase_is_end, &expected_pos_after_erase,
1020 expected, expected_len
1022 return test_tadfragment_cursor_erase_common(&testdata);
1025 LOCAL UNITTEST_RESULT test_tadfragment_cursor_erase_2()
1027 TC input[] = {TK_A, 0xFF80, 0x0002, 0x0000, TK_C};
1028 W input_len = sizeof(input);
1031 Bool expected_pos_after_erase_is_end = False;
1032 test_tadsegment_expected_t expected_pos_after_erase = {
1033 TADSEGMENT_TYPE_CHARACTOR,
1037 test_tadsegment_expected_t expected[] = {
1038 {TADSEGMENT_TYPE_CHARACTOR, (TC[]){TK_C}, 1},
1041 test_tadfragment_cursor_erase_t testdata = {
1043 erase_pos, erase_len,
1044 expected_pos_after_erase_is_end, &expected_pos_after_erase,
1045 expected, expected_len
1047 return test_tadfragment_cursor_erase_common(&testdata);
1050 LOCAL UNITTEST_RESULT test_tadfragment_cursor_erase_3()
1052 TC input[] = {TK_A, 0xFF80, 0x0002, 0x0000, TK_C};
1053 W input_len = sizeof(input);
1056 Bool expected_pos_after_erase_is_end = True;
1057 test_tadsegment_expected_t expected_pos_after_erase = {
1059 test_tadsegment_expected_t expected[] = {
1062 test_tadfragment_cursor_erase_t testdata = {
1064 erase_pos, erase_len,
1065 expected_pos_after_erase_is_end, &expected_pos_after_erase,
1066 expected, expected_len
1068 return test_tadfragment_cursor_erase_common(&testdata);
1071 LOCAL UNITTEST_RESULT test_tadfragment_cursor_erase_4()
1073 TC input[] = {TK_A, 0xFF80, 0x0002, 0x0000, TK_C};
1074 W input_len = sizeof(input);
1077 Bool expected_pos_after_erase_is_end = True;
1078 test_tadsegment_expected_t expected_pos_after_erase = {
1080 test_tadsegment_expected_t expected[] = {
1083 test_tadfragment_cursor_erase_t testdata = {
1085 erase_pos, erase_len,
1086 expected_pos_after_erase_is_end, &expected_pos_after_erase,
1087 expected, expected_len
1089 return test_tadfragment_cursor_erase_common(&testdata);
1092 LOCAL UNITTEST_RESULT test_tadfragment_cursor_erase_5()
1094 TC input[] = {TK_A, 0xFF80, 0x0002, 0x0000, TK_C};
1095 W input_len = sizeof(input);
1098 Bool expected_pos_after_erase_is_end = False;
1099 test_tadsegment_expected_t expected_pos_after_erase = {
1100 TADSEGMENT_TYPE_CHARACTOR,
1104 test_tadsegment_expected_t expected[] = {
1105 {TADSEGMENT_TYPE_CHARACTOR, (TC[]){TK_A}, 1},
1106 {TADSEGMENT_TYPE_CHARACTOR, (TC[]){TK_C}, 1},
1109 test_tadfragment_cursor_erase_t testdata = {
1111 erase_pos, erase_len,
1112 expected_pos_after_erase_is_end, &expected_pos_after_erase,
1113 expected, expected_len
1115 return test_tadfragment_cursor_erase_common(&testdata);
1118 LOCAL UNITTEST_RESULT test_tadfragment_cursor_erase_6()
1120 TC input[] = {TK_A, 0xFF80, 0x0002, 0x0000, TK_C};
1121 W input_len = sizeof(input);
1124 Bool expected_pos_after_erase_is_end = True;
1125 test_tadsegment_expected_t expected_pos_after_erase = {
1127 test_tadsegment_expected_t expected[] = {
1128 {TADSEGMENT_TYPE_CHARACTOR, (TC[]){TK_A}, 1},
1131 test_tadfragment_cursor_erase_t testdata = {
1133 erase_pos, erase_len,
1134 expected_pos_after_erase_is_end, &expected_pos_after_erase,
1135 expected, expected_len
1137 return test_tadfragment_cursor_erase_common(&testdata);
1140 LOCAL UNITTEST_RESULT test_tadfragment_cursor_erase_7()
1142 TC input[] = {TK_A, 0xFF80, 0x0002, 0x0000, TK_C};
1143 W input_len = sizeof(input);
1146 Bool expected_pos_after_erase_is_end = True;
1147 test_tadsegment_expected_t expected_pos_after_erase = {
1149 test_tadsegment_expected_t expected[] = {
1150 {TADSEGMENT_TYPE_CHARACTOR, (TC[]){TK_A}, 1},
1153 test_tadfragment_cursor_erase_t testdata = {
1155 erase_pos, erase_len,
1156 expected_pos_after_erase_is_end, &expected_pos_after_erase,
1157 expected, expected_len
1159 return test_tadfragment_cursor_erase_common(&testdata);
1162 LOCAL UNITTEST_RESULT test_tadfragment_cursor_erase_8()
1164 TC input[] = {TK_A, 0xFF80, 0x0002, 0x0000, TK_C};
1165 W input_len = sizeof(input);
1168 Bool expected_pos_after_erase_is_end = True;
1169 test_tadsegment_expected_t expected_pos_after_erase = {
1171 test_tadsegment_expected_t expected[] = {
1172 {TADSEGMENT_TYPE_CHARACTOR, (TC[]){TK_A}, 1},
1173 {TADSEGMENT_TYPE_VARIABLE, (TC[]){0xFF80, 0x0002, 0x0000}, 3},
1176 test_tadfragment_cursor_erase_t testdata = {
1178 erase_pos, erase_len,
1179 expected_pos_after_erase_is_end, &expected_pos_after_erase,
1180 expected, expected_len
1182 return test_tadfragment_cursor_erase_common(&testdata);
1185 LOCAL UNITTEST_RESULT test_tadfragment_cursor_erase_9()
1187 TC input[] = {TK_A, 0xFF80, 0x0002, 0x0000, TK_C};
1188 W input_len = sizeof(input);
1191 Bool expected_pos_after_erase_is_end = True;
1192 test_tadsegment_expected_t expected_pos_after_erase = {
1194 test_tadsegment_expected_t expected[] = {
1195 {TADSEGMENT_TYPE_CHARACTOR, (TC[]){TK_A}, 1},
1196 {TADSEGMENT_TYPE_VARIABLE, (TC[]){0xFF80, 0x0002, 0x0000}, 3},
1199 test_tadfragment_cursor_erase_t testdata = {
1201 erase_pos, erase_len,
1202 expected_pos_after_erase_is_end, &expected_pos_after_erase,
1203 expected, expected_len
1205 return test_tadfragment_cursor_erase_common(&testdata);
1208 EXPORT VOID test_tadfragment_main(unittest_driver_t *driver)
1210 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_pushback_1);
1211 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_pushback_2);
1212 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_pushback_3);
1213 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_pushback_4);
1214 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_pushback_5);
1215 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_pushback_6);
1216 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_pushback_7);
1217 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_popback_1);
1218 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_popback_2);
1219 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_popback_3);
1220 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_popback_4);
1221 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_popback_5);
1222 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_popback_6);
1223 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_popback_7);
1224 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_popback_8);
1225 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_truncate_1);
1226 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_truncate_2);
1227 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_truncate_3);
1228 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_truncate_4);
1229 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_truncate_5);
1230 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_cursor_insert_1);
1231 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_cursor_insert_2);
1232 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_cursor_insert_3);
1233 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_cursor_insert_4);
1234 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_cursor_insertlang_1);
1235 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_cursor_insertlang_2);
1236 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_cursor_insertlang_3);
1237 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_cursor_insertlang_4);
1238 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_cursor_insertlang_5);
1239 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_cursor_getdata_1);
1240 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_cursor_getdata_2);
1241 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_cursor_getdata_3);
1242 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_cursor_getdata_4);
1243 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_cursor_erase_1);
1244 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_cursor_erase_2);
1245 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_cursor_erase_3);
1246 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_cursor_erase_4);
1247 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_cursor_erase_5);
1248 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_cursor_erase_6);
1249 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_cursor_erase_7);
1250 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_cursor_erase_8);
1251 UNITTEST_DRIVER_REGIST(driver, test_tadfragment_cursor_erase_9);