4 * Copyright (c) 2009-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>
36 LOCAL TEST_RESULT test_character_reference_1()
38 charreferparser_t parser;
39 charreferparser_result_t parseresult;
42 err = charreferparser_initialize(&parser);
44 return TEST_RESULT_FAIL;
46 parseresult = charreferparser_parsechar(&parser, '&');
47 if (parseresult != CHARREFERPARSER_RESULT_CONTINUE) {
48 charreferparser_finalize(&parser);
49 return TEST_RESULT_FAIL;
51 parseresult = charreferparser_parsechar(&parser, '#');
52 if (parseresult != CHARREFERPARSER_RESULT_CONTINUE) {
53 charreferparser_finalize(&parser);
54 return TEST_RESULT_FAIL;
56 parseresult = charreferparser_parsechar(&parser, '1');
57 if (parseresult != CHARREFERPARSER_RESULT_CONTINUE) {
58 charreferparser_finalize(&parser);
59 return TEST_RESULT_FAIL;
61 parseresult = charreferparser_parsechar(&parser, '0');
62 if (parseresult != CHARREFERPARSER_RESULT_CONTINUE) {
63 charreferparser_finalize(&parser);
64 return TEST_RESULT_FAIL;
66 parseresult = charreferparser_parsechar(&parser, ';');
67 charreferparser_finalize(&parser);
68 if (parseresult != CHARREFERPARSER_RESULT_DETERMINE) {
69 return TEST_RESULT_FAIL;
71 err = charreferparser_getcharnumber(&parser);
73 charreferparser_finalize(&parser);
74 return TEST_RESULT_FAIL;
77 charreferparser_finalize(&parser);
78 return TEST_RESULT_FAIL;
80 charreferparser_finalize(&parser);
82 return TEST_RESULT_PASS;
85 LOCAL W test_charrefer_parsestr(charreferparser_t *parser, UB *str)
88 charreferparser_result_t result;
90 for (i = 0; str[i] != '\0'; i++) {
91 result = charreferparser_parsechar(parser, str[i]);
92 if (result == CHARREFERPARSER_RESULT_INVALID) {
95 if (result == CHARREFERPARSER_RESULT_DETERMINE) {
102 LOCAL TEST_RESULT test_character_reference_2()
172 charreferparser_t parser;
175 for (i = 0; tuple[i].str != NULL; i++) {
176 err = charreferparser_initialize(&parser);
178 return TEST_RESULT_FAIL;
180 err = test_charrefer_parsestr(&parser, tuple[i].str);
182 printf("failed to parsing\n");
183 return TEST_RESULT_FAIL;
185 err = charreferparser_getcharnumber(&parser);
187 printf("failed to get character number\n");
188 charreferparser_finalize(&parser);
189 return TEST_RESULT_FAIL;
191 if (err != tuple[i].val) {
192 printf("invalid parse result: %d(0x%x)\n", err, err);
193 printf(" <- %s\n", tuple[i].str);
194 printf(" <- %d\n", tuple[i].val);
195 printf(" <- 0x%x\n", tuple[i].val);
196 charreferparser_finalize(&parser);
197 return TEST_RESULT_FAIL;
199 charreferparser_finalize(&parser);
202 return TEST_RESULT_PASS;
205 LOCAL TEST_RESULT test_character_reference_3()
218 charreferparser_t parser;
221 for (i = 0; tuple[i].str != NULL; i++) {
222 err = charreferparser_initialize(&parser);
224 return TEST_RESULT_FAIL;
226 err = test_charrefer_parsestr(&parser, tuple[i].str);
228 printf("failed to parsing\n");
229 return TEST_RESULT_FAIL;
231 err = charreferparser_getcharnumber(&parser);
233 printf("failed to get character number\n");
234 charreferparser_finalize(&parser);
235 return TEST_RESULT_FAIL;
237 if (err != tuple[i].val) {
238 printf("invalid parse result: %d(0x%x)\n", err, err);
239 printf(" <- %s\n", tuple[i].str);
240 printf(" <- %d\n", tuple[i].val);
241 printf(" <- 0x%x\n", tuple[i].val);
242 charreferparser_finalize(&parser);
243 return TEST_RESULT_FAIL;
245 charreferparser_finalize(&parser);
248 return TEST_RESULT_PASS;
251 LOCAL TEST_RESULT test_character_reference_4()
256 charreferparser_t parser;
258 err = charreferparser_initialize(&parser);
260 return TEST_RESULT_FAIL;
262 for (i = 0; data[i] != '\0'; i++) {
263 err = charreferparser_parsechar(&parser, data[i]);
264 if (err == CHARREFERPARSER_RESULT_INVALID) {
269 printf("failed to invalid position\n");
270 charreferparser_finalize(&parser);
271 return TEST_RESULT_FAIL;
273 charreferparser_getlastmatchedstring(&parser, &str, &len);
275 printf("failed to get last matched string length\n");
276 charreferparser_finalize(&parser);
277 return TEST_RESULT_FAIL;
279 err = strncmp(data + 1, str, len);
281 printf("failed to get last matched string\n");
282 charreferparser_finalize(&parser);
283 return TEST_RESULT_FAIL;
285 charreferparser_finalize(&parser);
287 return TEST_RESULT_PASS;
290 LOCAL TEST_RESULT test_character_reference_5()
295 charreferparser_t parser;
297 err = charreferparser_initialize(&parser);
299 return TEST_RESULT_FAIL;
301 for (i = 0; data[i] != '\0'; i++) {
302 err = charreferparser_parsechar(&parser, data[i]);
303 if (err == CHARREFERPARSER_RESULT_INVALID) {
308 printf("failed to invalid position\n");
309 charreferparser_finalize(&parser);
310 return TEST_RESULT_FAIL;
312 charreferparser_getlastmatchedstring(&parser, &str, &len);
314 printf("failed to get last matched string length\n");
315 charreferparser_finalize(&parser);
316 return TEST_RESULT_FAIL;
318 err = strncmp(data + 1, str, len);
320 printf("failed to get last matched string\n");
321 charreferparser_finalize(&parser);
322 return TEST_RESULT_FAIL;
324 charreferparser_finalize(&parser);
326 return TEST_RESULT_PASS;
329 LOCAL TEST_RESULT test_character_reference_6()
334 charreferparser_t parser;
336 err = charreferparser_initialize(&parser);
338 return TEST_RESULT_FAIL;
340 for (i = 0; data[i] != '\0'; i++) {
341 err = charreferparser_parsechar(&parser, data[i]);
342 if (err == CHARREFERPARSER_RESULT_INVALID) {
347 printf("failed to invalid position\n");
348 charreferparser_finalize(&parser);
349 return TEST_RESULT_FAIL;
351 charreferparser_getlastmatchedstring(&parser, &str, &len);
353 printf("failed to get last matched string length\n");
354 charreferparser_finalize(&parser);
355 return TEST_RESULT_FAIL;
357 err = strncmp(data + 1, str, len);
359 printf("failed to get last matched string\n");
360 charreferparser_finalize(&parser);
361 return TEST_RESULT_FAIL;
363 charreferparser_finalize(&parser);
365 return TEST_RESULT_PASS;
368 LOCAL TEST_RESULT test_character_reference_7()
372 UB data[] = "&s;";
373 charreferparser_t parser;
375 err = charreferparser_initialize(&parser);
377 return TEST_RESULT_FAIL;
379 for (i = 0; data[i] != '\0'; i++) {
380 err = charreferparser_parsechar(&parser, data[i]);
381 if (err == CHARREFERPARSER_RESULT_INVALID) {
386 printf("failed to invalid position\n");
387 charreferparser_finalize(&parser);
388 return TEST_RESULT_FAIL;
390 charreferparser_getlastmatchedstring(&parser, &str, &len);
392 printf("failed to get last matched string length\n");
393 charreferparser_finalize(&parser);
394 return TEST_RESULT_FAIL;
396 err = strncmp(data + 1, str, len);
398 printf("failed to get last matched string\n");
399 charreferparser_finalize(&parser);
400 return TEST_RESULT_FAIL;
402 charreferparser_finalize(&parser);
404 return TEST_RESULT_PASS;
407 LOCAL TEST_RESULT test_character_reference_8()
411 UB data[] = "&qqqq;";
412 charreferparser_t parser;
414 err = charreferparser_initialize(&parser);
416 return TEST_RESULT_FAIL;
418 for (i = 0; data[i] != '\0'; i++) {
419 err = charreferparser_parsechar(&parser, data[i]);
420 if (err == CHARREFERPARSER_RESULT_INVALID) {
425 printf("failed to invalid position\n");
426 charreferparser_finalize(&parser);
427 return TEST_RESULT_FAIL;
429 charreferparser_getlastmatchedstring(&parser, &str, &len);
431 printf("failed to get last matched string length\n");
432 charreferparser_finalize(&parser);
433 return TEST_RESULT_FAIL;
435 err = strncmp(data + 1, str, len);
437 printf("failed to get last matched string\n");
438 charreferparser_finalize(&parser);
439 return TEST_RESULT_FAIL;
441 charreferparser_finalize(&parser);
443 return TEST_RESULT_PASS;
446 LOCAL TEST_RESULT test_character_reference_9()
450 UB data[] = "&quuu;";
451 charreferparser_t parser;
453 err = charreferparser_initialize(&parser);
455 return TEST_RESULT_FAIL;
457 for (i = 0; data[i] != '\0'; i++) {
458 err = charreferparser_parsechar(&parser, data[i]);
459 if (err == CHARREFERPARSER_RESULT_INVALID) {
464 printf("failed to invalid position\n");
465 charreferparser_finalize(&parser);
466 return TEST_RESULT_FAIL;
468 charreferparser_getlastmatchedstring(&parser, &str, &len);
470 printf("failed to get last matched string length\n");
471 charreferparser_finalize(&parser);
472 return TEST_RESULT_FAIL;
474 err = strncmp(data + 1, str, len);
476 printf("failed to get last matched string\n");
477 charreferparser_finalize(&parser);
478 return TEST_RESULT_FAIL;
480 charreferparser_finalize(&parser);
482 return TEST_RESULT_PASS;
485 LOCAL TEST_RESULT test_character_reference_10()
489 UB data[] = "&quoo;";
490 charreferparser_t parser;
492 err = charreferparser_initialize(&parser);
494 return TEST_RESULT_FAIL;
496 for (i = 0; data[i] != '\0'; i++) {
497 err = charreferparser_parsechar(&parser, data[i]);
498 if (err == CHARREFERPARSER_RESULT_INVALID) {
503 printf("failed to invalid position\n");
504 charreferparser_finalize(&parser);
505 return TEST_RESULT_FAIL;
507 charreferparser_getlastmatchedstring(&parser, &str, &len);
509 printf("failed to get last matched string length\n");
510 charreferparser_finalize(&parser);
511 return TEST_RESULT_FAIL;
513 err = strncmp(data + 1, str, len);
515 printf("failed to get last matched string\n");
516 charreferparser_finalize(&parser);
517 return TEST_RESULT_FAIL;
519 charreferparser_finalize(&parser);
521 return TEST_RESULT_PASS;
524 LOCAL TEST_RESULT test_character_reference_11()
528 UB data[] = ""t;";
529 charreferparser_t parser;
531 err = charreferparser_initialize(&parser);
533 return TEST_RESULT_FAIL;
535 for (i = 0; data[i] != '\0'; i++) {
536 err = charreferparser_parsechar(&parser, data[i]);
537 if (err == CHARREFERPARSER_RESULT_INVALID) {
542 printf("failed to invalid position\n");
543 charreferparser_finalize(&parser);
544 return TEST_RESULT_FAIL;
546 charreferparser_getlastmatchedstring(&parser, &str, &len);
548 printf("failed to get last matched string length\n");
549 charreferparser_finalize(&parser);
550 return TEST_RESULT_FAIL;
552 err = strncmp(data + 1, str, len);
554 printf("failed to get last matched string\n");
555 charreferparser_finalize(&parser);
556 return TEST_RESULT_FAIL;
558 charreferparser_finalize(&parser);
560 return TEST_RESULT_PASS;
563 LOCAL tokenchecker_valuetuple_t test_tokenchecker_testdata_tuple_0001[] = {
572 LOCAL UB test_tokenchecker_testdata_etoken_0001[] = ":>";
574 LOCAL TEST_RESULT test_tokenchecker_1()
576 tokenchecker_t checker;
577 W i, j, len, len2, val, ret;
580 str = strdup(test_tokenchecker_testdata_tuple_0001[0].name);
583 tokenchecker_initialize(&checker,
584 test_tokenchecker_testdata_tuple_0001,
586 test_tokenchecker_testdata_etoken_0001);
588 for (i = 0; i < len; i++) {
589 ret = tokenchecker_inputchar(&checker, str[i], &val);
590 if (ret != TOKENCHECKER_CONTINUE) {
591 printf("tokenchecker_inputchar fail: right string\n");
593 return TEST_RESULT_FAIL;
595 tokenchecker_getlastmatchedstring(&checker, &str2, &len2);
596 if (strncmp(str, str2, len2) != 0) {
597 printf("tokenchecker_getlastmatchedstring fail: right string\n");
599 for (j = 0; j < len; j++) {
600 printf("%c", str[j]);
603 for (j = 0; j < len; j++) {
604 printf("%c", str2[j]);
608 return TEST_RESULT_FAIL;
611 ret = tokenchecker_inputchar(&checker, ':', &val);
612 if (ret != TOKENCHECKER_DETERMINE) {
613 printf("tokenchecker_inputchar fail: end character\n");
615 return TEST_RESULT_FAIL;
618 printf("tokenchecker_inputchar fail: select value\n");
620 return TEST_RESULT_FAIL;
622 tokenchecker_getlastmatchedstring(&checker, &str2, &len2);
623 if (strncmp(str, str2, len2) != 0) {
624 printf("tokenchecker_getlastmatchedstring fail: end token\n");
626 return TEST_RESULT_FAIL;
628 ret = tokenchecker_inputchar(&checker, ':', &val);
629 if (ret != TOKENCHECKER_AFTER_END) {
630 printf("tokenchecker_inputchar fail: after end\n");
632 return TEST_RESULT_FAIL;
636 return TEST_RESULT_PASS;
639 LOCAL TEST_RESULT test_tokenchecker_2()
641 tokenchecker_t checker;
642 W i, j, len, len2, val, ret;
645 str = strdup(test_tokenchecker_testdata_tuple_0001[1].name);
648 tokenchecker_initialize(&checker,
649 test_tokenchecker_testdata_tuple_0001,
651 test_tokenchecker_testdata_etoken_0001);
653 for (i = 0; i < len; i++) {
654 ret = tokenchecker_inputchar(&checker, str[i], &val);
655 if (ret != TOKENCHECKER_CONTINUE) {
656 printf("tokenchecker_inputchar fail: right string\n");
658 return TEST_RESULT_FAIL;
660 tokenchecker_getlastmatchedstring(&checker, &str2, &len2);
661 if (strncmp(str, str2, len2) != 0) {
662 printf("tokenchecker_getlastmatchedstring fail: right string\n");
664 for (j = 0; j < len; j++) {
665 printf("%c", str[j]);
668 for (j = 0; j < len; j++) {
669 printf("%c", str2[j]);
673 return TEST_RESULT_FAIL;
676 ret = tokenchecker_inputchar(&checker, ':', &val);
677 if (ret != TOKENCHECKER_DETERMINE) {
678 printf("tokenchecker_inputchar fail: end character\n");
680 return TEST_RESULT_FAIL;
683 printf("tokenchecker_inputchar fail: select value\n");
685 return TEST_RESULT_FAIL;
687 tokenchecker_getlastmatchedstring(&checker, &str2, &len2);
688 if (strncmp(str, str2, len2) != 0) {
689 printf("tokenchecker_getlastmatchedstring fail: end token\n");
691 return TEST_RESULT_FAIL;
693 ret = tokenchecker_inputchar(&checker, ':', &val);
694 if (ret != TOKENCHECKER_AFTER_END) {
695 printf("tokenchecker_inputchar fail: after end\n");
697 return TEST_RESULT_FAIL;
701 return TEST_RESULT_PASS;
704 LOCAL TEST_RESULT test_tokenchecker_3()
706 tokenchecker_t checker;
707 W i, j, len, len2, val, ret;
710 str = strdup(test_tokenchecker_testdata_tuple_0001[2].name);
713 tokenchecker_initialize(&checker,
714 test_tokenchecker_testdata_tuple_0001,
716 test_tokenchecker_testdata_etoken_0001);
718 for (i = 0; i < len; i++) {
719 ret = tokenchecker_inputchar(&checker, str[i], &val);
720 if (ret != TOKENCHECKER_CONTINUE) {
721 printf("tokenchecker_inputchar fail: right string\n");
723 return TEST_RESULT_FAIL;
725 tokenchecker_getlastmatchedstring(&checker, &str2, &len2);
726 if (strncmp(str, str2, len2) != 0) {
727 printf("tokenchecker_getlastmatchedstring fail: right string\n");
729 for (j = 0; j < len; j++) {
730 printf("%c", str[j]);
733 for (j = 0; j < len; j++) {
734 printf("%c", str2[j]);
738 return TEST_RESULT_FAIL;
741 ret = tokenchecker_inputchar(&checker, ':', &val);
742 if (ret != TOKENCHECKER_DETERMINE) {
743 printf("tokenchecker_inputchar fail: end character\n");
745 return TEST_RESULT_FAIL;
748 printf("tokenchecker_inputchar fail: select value\n");
750 return TEST_RESULT_FAIL;
752 tokenchecker_getlastmatchedstring(&checker, &str2, &len2);
753 if (strncmp(str, str2, len2) != 0) {
754 printf("tokenchecker_getlastmatchedstring fail: end token\n");
756 return TEST_RESULT_FAIL;
758 ret = tokenchecker_inputchar(&checker, ':', &val);
759 if (ret != TOKENCHECKER_AFTER_END) {
760 printf("tokenchecker_inputchar fail: after end\n");
762 return TEST_RESULT_FAIL;
766 return TEST_RESULT_PASS;
769 LOCAL TEST_RESULT test_tokenchecker_4()
771 tokenchecker_t checker;
772 W i, j, len, len2, val, ret;
775 str = strdup(test_tokenchecker_testdata_tuple_0001[3].name);
778 tokenchecker_initialize(&checker,
779 test_tokenchecker_testdata_tuple_0001,
781 test_tokenchecker_testdata_etoken_0001);
783 for (i = 0; i < len; i++) {
784 ret = tokenchecker_inputchar(&checker, str[i], &val);
785 if (ret != TOKENCHECKER_CONTINUE) {
786 printf("tokenchecker_inputchar fail: right string\n");
788 return TEST_RESULT_FAIL;
790 tokenchecker_getlastmatchedstring(&checker, &str2, &len2);
791 if (strncmp(str, str2, len2) != 0) {
792 printf("tokenchecker_getlastmatchedstring fail: right string\n");
794 for (j = 0; j < len; j++) {
795 printf("%c", str[j]);
798 for (j = 0; j < len; j++) {
799 printf("%c", str2[j]);
803 return TEST_RESULT_FAIL;
806 ret = tokenchecker_inputchar(&checker, ':', &val);
807 if (ret != TOKENCHECKER_DETERMINE) {
808 printf("tokenchecker_inputchar fail: end character\n");
810 return TEST_RESULT_FAIL;
813 printf("tokenchecker_inputchar fail: select value\n");
815 return TEST_RESULT_FAIL;
817 tokenchecker_getlastmatchedstring(&checker, &str2, &len2);
818 if (strncmp(str, str2, len2) != 0) {
819 printf("tokenchecker_getlastmatchedstring fail: end token\n");
821 return TEST_RESULT_FAIL;
823 ret = tokenchecker_inputchar(&checker, ':', &val);
824 if (ret != TOKENCHECKER_AFTER_END) {
825 printf("tokenchecker_inputchar fail: after end\n");
827 return TEST_RESULT_FAIL;
831 return TEST_RESULT_PASS;
834 LOCAL TEST_RESULT test_tokenchecker_5()
836 tokenchecker_t checker;
837 W i, j, len, len2, val, ret;
840 str = strdup(test_tokenchecker_testdata_tuple_0001[4].name);
843 tokenchecker_initialize(&checker,
844 test_tokenchecker_testdata_tuple_0001,
846 test_tokenchecker_testdata_etoken_0001);
848 for (i = 0; i < len; i++) {
849 ret = tokenchecker_inputchar(&checker, str[i], &val);
850 if (ret != TOKENCHECKER_CONTINUE) {
851 printf("tokenchecker_inputchar fail: right string\n");
853 return TEST_RESULT_FAIL;
855 tokenchecker_getlastmatchedstring(&checker, &str2, &len2);
856 if (strncmp(str, str2, len2) != 0) {
857 printf("tokenchecker_getlastmatchedstring fail: right string\n");
859 for (j = 0; j < len; j++) {
860 printf("%c", str[j]);
863 for (j = 0; j < len; j++) {
864 printf("%c", str2[j]);
868 return TEST_RESULT_FAIL;
871 ret = tokenchecker_inputchar(&checker, ':', &val);
872 if (ret != TOKENCHECKER_DETERMINE) {
873 printf("tokenchecker_inputchar fail: end character\n");
875 return TEST_RESULT_FAIL;
878 printf("tokenchecker_inputchar fail: select value\n");
880 return TEST_RESULT_FAIL;
882 tokenchecker_getlastmatchedstring(&checker, &str2, &len2);
883 if (strncmp(str, str2, len2) != 0) {
884 printf("tokenchecker_getlastmatchedstring fail: end token\n");
886 return TEST_RESULT_FAIL;
888 ret = tokenchecker_inputchar(&checker, ':', &val);
889 if (ret != TOKENCHECKER_AFTER_END) {
890 printf("tokenchecker_inputchar fail: after end\n");
892 return TEST_RESULT_FAIL;
896 return TEST_RESULT_PASS;
899 LOCAL TEST_RESULT test_tokenchecker_6()
901 tokenchecker_t checker;
902 W i, j, len, len2, val, ret;
905 str = strdup(test_tokenchecker_testdata_tuple_0001[5].name);
908 tokenchecker_initialize(&checker,
909 test_tokenchecker_testdata_tuple_0001,
911 test_tokenchecker_testdata_etoken_0001);
913 for (i = 0; i < len; i++) {
914 ret = tokenchecker_inputchar(&checker, str[i], &val);
915 if (ret != TOKENCHECKER_CONTINUE) {
916 printf("tokenchecker_inputchar fail: right string\n");
918 return TEST_RESULT_FAIL;
920 tokenchecker_getlastmatchedstring(&checker, &str2, &len2);
921 if (strncmp(str, str2, len2) != 0) {
922 printf("tokenchecker_getlastmatchedstring fail: right string\n");
924 for (j = 0; j < len; j++) {
925 printf("%c", str[j]);
928 for (j = 0; j < len; j++) {
929 printf("%c", str2[j]);
933 return TEST_RESULT_FAIL;
936 ret = tokenchecker_inputchar(&checker, ':', &val);
937 if (ret != TOKENCHECKER_DETERMINE) {
938 printf("tokenchecker_inputchar fail: end character\n");
940 return TEST_RESULT_FAIL;
943 printf("tokenchecker_inputchar fail: select value\n");
945 return TEST_RESULT_FAIL;
947 tokenchecker_getlastmatchedstring(&checker, &str2, &len2);
948 if (strncmp(str, str2, len2) != 0) {
949 printf("tokenchecker_getlastmatchedstring fail: end token\n");
951 return TEST_RESULT_FAIL;
953 ret = tokenchecker_inputchar(&checker, ':', &val);
954 if (ret != TOKENCHECKER_AFTER_END) {
955 printf("tokenchecker_inputchar fail: after end\n");
957 return TEST_RESULT_FAIL;
961 return TEST_RESULT_PASS;
964 LOCAL TEST_RESULT test_tokenchecker_7()
966 tokenchecker_t checker;
967 W i, j, len, len2, val, ret;
970 str = strdup(test_tokenchecker_testdata_tuple_0001[6].name);
973 tokenchecker_initialize(&checker,
974 test_tokenchecker_testdata_tuple_0001,
976 test_tokenchecker_testdata_etoken_0001);
978 for (i = 0; i < len; i++) {
979 ret = tokenchecker_inputchar(&checker, str[i], &val);
980 if (ret != TOKENCHECKER_CONTINUE) {
981 printf("tokenchecker_inputchar fail: right string\n");
983 return TEST_RESULT_FAIL;
985 tokenchecker_getlastmatchedstring(&checker, &str2, &len2);
986 if (strncmp(str, str2, len2) != 0) {
987 printf("tokenchecker_getlastmatchedstring fail: right string\n");
989 for (j = 0; j < len; j++) {
990 printf("%c", str[j]);
993 for (j = 0; j < len; j++) {
994 printf("%c", str2[j]);
998 return TEST_RESULT_FAIL;
1001 ret = tokenchecker_inputchar(&checker, ':', &val);
1002 if (ret != TOKENCHECKER_DETERMINE) {
1003 printf("tokenchecker_inputchar fail: end character\n");
1005 return TEST_RESULT_FAIL;
1008 printf("tokenchecker_inputchar fail: select value\n");
1010 return TEST_RESULT_FAIL;
1012 tokenchecker_getlastmatchedstring(&checker, &str2, &len2);
1013 if (strncmp(str, str2, len2) != 0) {
1014 printf("tokenchecker_getlastmatchedstring fail: end token\n");
1016 return TEST_RESULT_FAIL;
1018 ret = tokenchecker_inputchar(&checker, ':', &val);
1019 if (ret != TOKENCHECKER_AFTER_END) {
1020 printf("tokenchecker_inputchar fail: after end\n");
1022 return TEST_RESULT_FAIL;
1026 return TEST_RESULT_PASS;
1029 LOCAL TEST_RESULT test_tokenchecker_nomatch_getlastmatchedstring_sequence(tokenchecker_t *checker, W num, UB *teststr, W teststr_len)
1031 W i, j, len2, ret, val;
1034 for (i = 0; i < num; i++) {
1035 ret = tokenchecker_inputchar(checker, teststr[i], &val);
1036 if (ret != TOKENCHECKER_CONTINUE) {
1037 printf("tokenchecker_inputchar fail: right string\n");
1038 return TEST_RESULT_FAIL;
1041 ret = tokenchecker_inputchar(checker, 'z', &val);
1042 if (ret != TOKENCHECKER_CONTINUE_NOMATCH) {
1043 printf("tokenchecker_inputchar fail: nomatch char\n");
1044 return TEST_RESULT_FAIL;
1046 tokenchecker_getlastmatchedstring(checker, &str2, &len2);
1048 printf("tokenchecker_getlastmatchedstring fail: length\n");
1049 return TEST_RESULT_FAIL;
1051 if (strncmp(teststr, str2, len2) != 0) {
1052 printf("tokenchecker_getlastmatchedstring fail: nomatch string\n");
1054 for (j = 0; j < len2; j++) {
1055 printf("%c", teststr[j]);
1058 for (j = 0; j < len2; j++) {
1059 printf("%c", str2[j]);
1062 return TEST_RESULT_FAIL;
1065 return TEST_RESULT_PASS;
1068 LOCAL TEST_RESULT test_tokenchecker_8()
1070 tokenchecker_t checker;
1075 str = strdup(test_tokenchecker_testdata_tuple_0001[0].name);
1078 tokenchecker_initialize(&checker,
1079 test_tokenchecker_testdata_tuple_0001,
1081 test_tokenchecker_testdata_etoken_0001);
1083 for (i = 1; i < len; i++) {
1084 result = test_tokenchecker_nomatch_getlastmatchedstring_sequence(&checker, i, str, len);
1085 if (result != TEST_RESULT_PASS) {
1088 tokenchecker_clear(&checker);
1093 return TEST_RESULT_PASS;
1096 LOCAL TEST_RESULT test_tokenchecker_9()
1098 tokenchecker_t checker;
1103 str = strdup(test_tokenchecker_testdata_tuple_0001[1].name);
1106 tokenchecker_initialize(&checker,
1107 test_tokenchecker_testdata_tuple_0001,
1109 test_tokenchecker_testdata_etoken_0001);
1111 for (i = 1; i < len; i++) {
1112 result = test_tokenchecker_nomatch_getlastmatchedstring_sequence(&checker, i, str, len);
1113 if (result != TEST_RESULT_PASS) {
1116 tokenchecker_clear(&checker);
1121 return TEST_RESULT_PASS;
1124 LOCAL TEST_RESULT test_tokenchecker_10()
1126 tokenchecker_t checker;
1131 str = strdup(test_tokenchecker_testdata_tuple_0001[2].name);
1134 tokenchecker_initialize(&checker,
1135 test_tokenchecker_testdata_tuple_0001,
1137 test_tokenchecker_testdata_etoken_0001);
1139 for (i = 1; i < len; i++) {
1140 result = test_tokenchecker_nomatch_getlastmatchedstring_sequence(&checker, i, str, len);
1141 if (result != TEST_RESULT_PASS) {
1144 tokenchecker_clear(&checker);
1149 return TEST_RESULT_PASS;
1152 LOCAL TEST_RESULT test_tokenchecker_11()
1154 tokenchecker_t checker;
1159 str = strdup(test_tokenchecker_testdata_tuple_0001[3].name);
1162 tokenchecker_initialize(&checker,
1163 test_tokenchecker_testdata_tuple_0001,
1165 test_tokenchecker_testdata_etoken_0001);
1167 for (i = 1; i < len; i++) {
1168 result = test_tokenchecker_nomatch_getlastmatchedstring_sequence(&checker, i, str, len);
1169 if (result != TEST_RESULT_PASS) {
1172 tokenchecker_clear(&checker);
1177 return TEST_RESULT_PASS;
1180 LOCAL TEST_RESULT test_tokenchecker_12()
1182 tokenchecker_t checker;
1187 str = strdup(test_tokenchecker_testdata_tuple_0001[4].name);
1190 tokenchecker_initialize(&checker,
1191 test_tokenchecker_testdata_tuple_0001,
1193 test_tokenchecker_testdata_etoken_0001);
1195 for (i = 1; i < len; i++) {
1196 result = test_tokenchecker_nomatch_getlastmatchedstring_sequence(&checker, i, str, len);
1197 if (result != TEST_RESULT_PASS) {
1200 tokenchecker_clear(&checker);
1205 return TEST_RESULT_PASS;
1208 LOCAL TEST_RESULT test_tokenchecker_13()
1210 tokenchecker_t checker;
1215 str = strdup(test_tokenchecker_testdata_tuple_0001[5].name);
1218 tokenchecker_initialize(&checker,
1219 test_tokenchecker_testdata_tuple_0001,
1221 test_tokenchecker_testdata_etoken_0001);
1223 for (i = 1; i < len; i++) {
1224 result = test_tokenchecker_nomatch_getlastmatchedstring_sequence(&checker, i, str, len);
1225 if (result != TEST_RESULT_PASS) {
1228 tokenchecker_clear(&checker);
1233 return TEST_RESULT_PASS;
1236 LOCAL TEST_RESULT test_tokenchecker_14()
1238 tokenchecker_t checker;
1243 str = strdup(test_tokenchecker_testdata_tuple_0001[6].name);
1246 tokenchecker_initialize(&checker,
1247 test_tokenchecker_testdata_tuple_0001,
1249 test_tokenchecker_testdata_etoken_0001);
1251 for (i = 1; i < len; i++) {
1252 result = test_tokenchecker_nomatch_getlastmatchedstring_sequence(&checker, i, str, len);
1253 if (result != TEST_RESULT_PASS) {
1256 tokenchecker_clear(&checker);
1261 return TEST_RESULT_PASS;
1264 LOCAL VOID test_parselib_printresult(TEST_RESULT (*proc)(), B *test_name)
1268 printf("test_parselib: %s\n", test_name);
1269 printf("---------------------------------------------\n");
1271 if (result == TEST_RESULT_PASS) {
1272 printf("--pass---------------------------------------\n");
1274 printf("--fail---------------------------------------\n");
1276 printf("---------------------------------------------\n");
1279 EXPORT VOID test_parselib_main()
1281 test_parselib_printresult(test_character_reference_1, "test_character_reference_1");
1282 test_parselib_printresult(test_character_reference_2, "test_character_reference_2");
1283 test_parselib_printresult(test_character_reference_3, "test_character_reference_3");
1284 test_parselib_printresult(test_character_reference_4, "test_character_reference_4");
1285 test_parselib_printresult(test_character_reference_5, "test_character_reference_5");
1286 test_parselib_printresult(test_character_reference_6, "test_character_reference_6");
1287 test_parselib_printresult(test_character_reference_7, "test_character_reference_7");
1288 test_parselib_printresult(test_character_reference_8, "test_character_reference_8");
1289 test_parselib_printresult(test_character_reference_9, "test_character_reference_9");
1290 test_parselib_printresult(test_character_reference_10, "test_character_reference_10");
1291 test_parselib_printresult(test_character_reference_11, "test_character_reference_11");
1292 test_parselib_printresult(test_tokenchecker_1, "test_tokenchecker_1");
1293 test_parselib_printresult(test_tokenchecker_2, "test_tokenchecker_2");
1294 test_parselib_printresult(test_tokenchecker_3, "test_tokenchecker_3");
1295 test_parselib_printresult(test_tokenchecker_4, "test_tokenchecker_4");
1296 test_parselib_printresult(test_tokenchecker_5, "test_tokenchecker_5");
1297 test_parselib_printresult(test_tokenchecker_6, "test_tokenchecker_6");
1298 test_parselib_printresult(test_tokenchecker_7, "test_tokenchecker_7");
1299 test_parselib_printresult(test_tokenchecker_8, "test_tokenchecker_8");
1300 test_parselib_printresult(test_tokenchecker_9, "test_tokenchecker_9");
1301 test_parselib_printresult(test_tokenchecker_10, "test_tokenchecker_10");
1302 test_parselib_printresult(test_tokenchecker_11, "test_tokenchecker_11");
1303 test_parselib_printresult(test_tokenchecker_12, "test_tokenchecker_12");
1304 test_parselib_printresult(test_tokenchecker_13, "test_tokenchecker_13");
1305 test_parselib_printresult(test_tokenchecker_14, "test_tokenchecker_14");