57 #ifdef BUILD_HYPERSCAN
71 if ((
ConfGet(
"spm-algo", &spm_algo)) == 1) {
72 if (spm_algo != NULL) {
73 if (strcmp(
"auto", spm_algo) == 0) {
80 if (strcmp(
spm_table[i].name, spm_algo) == 0) {
86 #ifndef BUILD_HYPERSCAN
87 if ((spm_algo != NULL) && (strcmp(spm_algo,
"hs") == 0)) {
88 FatalError(
"Hyperscan (hs) support for spm-algo is "
89 "not compiled into Suricata.");
93 "in the yaml conf file: \"%s\"",
101 #ifdef BUILD_HYPERSCAN
102 #ifdef HAVE_HS_VALID_PLATFORM
105 if (hs_valid_platform() != HS_SUCCESS) {
106 SCLogInfo(
"SSSE3 support not detected, disabling Hyperscan for "
127 #ifdef BUILD_HYPERSCAN
128 #ifdef HAVE_HS_VALID_PLATFORM
129 if (hs_valid_platform() == HS_SUCCESS) {
146 if (global_thread_ctx == NULL) {
149 uint8_t matcher = global_thread_ctx->
matcher;
155 if (global_thread_ctx == NULL) {
158 uint8_t matcher = global_thread_ctx->
matcher;
165 if (thread_ctx == NULL) {
168 uint8_t matcher = thread_ctx->
matcher;
176 BUG_ON(global_thread_ctx == NULL);
177 uint8_t matcher = global_thread_ctx->
matcher;
188 uint8_t matcher =
ctx->matcher;
194 const uint8_t *haystack, uint32_t haystack_len)
196 uint8_t matcher =
ctx->matcher;
215 const uint8_t *needle, uint16_t needlelen)
220 return Bs2Bm(text, textlen, needle, needlelen, badchars);
233 const uint8_t *needle, uint16_t needlelen)
237 uint8_t *ret =
BoyerMoore(needle, needlelen, text, textlen, bm_ctx);
253 uint8_t *needle, uint16_t needlelen)
277 static uint8_t *BasicSearchWrapper(uint8_t *text, uint8_t *needle,
int times)
279 uint32_t textlen = strlen((
char *)text);
280 uint16_t needlelen = (uint16_t)strlen((
char *)needle);
289 for (i = 0; i < times; i++) {
290 ret =
BasicSearch(text, textlen, needle, needlelen);
297 static uint8_t *BasicSearchNocaseWrapper(uint8_t *text, uint8_t *needle,
int times)
299 uint32_t textlen = strlen((
char *)text);
300 uint16_t needlelen = (uint16_t)strlen((
char *)needle);
307 for (i = 0; i < times; i++) {
314 static uint8_t *Bs2bmWrapper(uint8_t *text, uint8_t *needle,
int times)
316 uint32_t textlen = strlen((
char *)text);
317 uint16_t needlelen = (uint16_t)strlen((
char *)needle);
327 for (i = 0; i < times; i++) {
328 ret =
Bs2Bm(text, textlen, needle, needlelen, badchars);
334 static uint8_t *Bs2bmNocaseWrapper(uint8_t *text, uint8_t *needle,
int times)
336 uint32_t textlen = strlen((
char *)text);
337 uint16_t needlelen = (uint16_t)strlen((
char *)needle);
347 for (i = 0; i < times; i++) {
348 ret =
Bs2BmNocase(text, textlen, needle, needlelen, badchars);
354 static uint8_t *BoyerMooreWrapper(uint8_t *text, uint8_t *needle,
int times)
356 uint32_t textlen = strlen((
char *)text);
357 uint16_t needlelen = (uint16_t)strlen((
char *)needle);
366 for (i = 0; i < times; i++) {
367 ret =
BoyerMoore(needle, needlelen, text, textlen, bm_ctx);
374 static uint8_t *BoyerMooreNocaseWrapper(uint8_t *text, uint8_t *in_needle,
int times)
376 uint32_t textlen = strlen((
char *)text);
377 uint16_t needlelen = (uint16_t)strlen((
char *)in_needle);
380 uint8_t *needle =
SCMalloc(needlelen);
383 memcpy(needle, in_needle, needlelen);
392 for (i = 0; i < times; i++) {
402 #ifdef ENABLE_SEARCH_STATS
404 #define STATS_TIMES 1000000
413 static uint8_t *BasicSearchCtxWrapper(uint8_t *text, uint8_t *needle,
int times)
415 uint32_t textlen = strlen((
char *)text);
416 uint16_t needlelen = strlen((
char *)needle);
423 for (i = 0; i < times; i++) {
425 ret =
BasicSearch(text, textlen, needle, needlelen);
431 static uint8_t *BasicSearchNocaseCtxWrapper(uint8_t *text, uint8_t *needle,
int times)
433 uint32_t textlen = strlen((
char *)text);
434 uint16_t needlelen = strlen((
char *)needle);
441 for (i = 0; i < times; i++) {
449 static uint8_t *Bs2bmCtxWrapper(uint8_t *text, uint8_t *needle,
int times)
451 uint32_t textlen = strlen((
char *)text);
452 uint16_t needlelen = strlen((
char *)needle);
461 for (i = 0; i < times; i++) {
464 ret =
Bs2Bm(text, textlen, needle, needlelen, badchars);
470 static uint8_t *Bs2bmNocaseCtxWrapper(uint8_t *text, uint8_t *needle,
int times)
472 uint32_t textlen = strlen((
char *)text);
473 uint16_t needlelen = strlen((
char *)needle);
482 for (i = 0; i < times; i++) {
485 ret =
Bs2BmNocase(text, textlen, needle, needlelen, badchars);
491 static uint8_t *BoyerMooreCtxWrapper(uint8_t *text, uint8_t *needle,
int times)
493 uint32_t textlen = strlen((
char *)text);
494 uint16_t needlelen = strlen((
char *)needle);
503 for (i = 0; i < times; i++) {
505 ret =
BoyerMoore(needle, needlelen, text, textlen, bm_ctx);
513 static uint8_t *RawCtxWrapper(uint8_t *text, uint8_t *needle,
int times)
515 uint32_t textlen = strlen((
char *)text);
516 uint16_t needlelen = strlen((
char *)needle);
523 for (i = 0; i < times; i++) {
524 ret =
SpmSearch(text, textlen, needle, needlelen);
530 static uint8_t *BoyerMooreNocaseCtxWrapper(uint8_t *text, uint8_t *in_needle,
int times)
532 uint32_t textlen = strlen((
char *)text);
533 uint16_t needlelen = strlen((
char *)in_needle);
536 uint8_t *needle =
SCMalloc(needlelen);
539 memcpy(needle, in_needle, needlelen);
548 for (i = 0; i < times; i++) {
562 static int UtilSpmBasicSearchTest01(
void)
564 uint8_t *needle = (uint8_t *)
"oPqRsT";
565 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
566 uint8_t *found = BasicSearchWrapper(text, needle, 1);
577 static int UtilSpmBasicSearchNocaseTest01(
void)
579 uint8_t *needle = (uint8_t *)
"OpQrSt";
580 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
581 uint8_t *found = BasicSearchNocaseWrapper(text, needle, 1);
592 static int UtilSpmBs2bmSearchTest01(
void)
594 uint8_t *needle = (uint8_t *)
"oPqRsT";
595 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
596 uint8_t *found = Bs2bmWrapper(text, needle, 1);
607 static int UtilSpmBs2bmSearchNocaseTest01(
void)
609 uint8_t *needle = (uint8_t *)
"OpQrSt";
610 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
611 uint8_t *found = Bs2bmNocaseWrapper(text, needle, 1);
622 static int UtilSpmBoyerMooreSearchTest01(
void)
624 uint8_t *needle = (uint8_t *)
"oPqRsT";
625 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
626 uint8_t *found = BoyerMooreWrapper(text, needle, 1);
637 static int UtilSpmBoyerMooreSearchNocaseTest01(
void)
639 uint8_t *needle = (uint8_t *)
"OpQrSt";
640 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
641 uint8_t *found = BoyerMooreNocaseWrapper(text, needle, 1);
653 static int UtilSpmBoyerMooreSearchNocaseTestIssue130(
void)
655 uint8_t *needle = (uint8_t *)
"WWW-Authenticate: ";
656 uint8_t *text = (uint8_t *)
"Date: Mon, 23 Feb 2009 13:31:49 GMT"
658 "Www-authenticate: Basic realm=\"Authentification user password\"\r\n"
659 "Vary: accept-language,accept-charset\r\n"
660 "Accept-ranges: bytes\r\n"
661 "Connection: close\r\n"
662 "Content-type: text/html; charset=iso-8859-1\r\n"
663 "Content-language: fr\r\n"
664 "Expires: Mon, 23 Feb 2009 13:31:49 GMT\r\n\r\n";
665 uint8_t *found = BoyerMooreNocaseWrapper(text, needle, 1);
674 static int UtilSpmBasicSearchTest02(
void)
676 uint8_t *needle = (uint8_t *)
"oPQRsT";
677 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
678 uint8_t *found = BasicSearchWrapper(text, needle, 1);
686 static int UtilSpmBasicSearchNocaseTest02(
void)
688 uint8_t *needle = (uint8_t *)
"OpZrSt";
689 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
690 uint8_t *found = BasicSearchNocaseWrapper(text, needle, 1);
698 static int UtilSpmBs2bmSearchTest02(
void)
700 uint8_t *needle = (uint8_t *)
"oPQRsT";
701 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
702 uint8_t *found = Bs2bmWrapper(text, needle, 1);
710 static int UtilSpmBs2bmSearchNocaseTest02(
void)
712 uint8_t *needle = (uint8_t *)
"OpZrSt";
713 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
714 uint8_t *found = Bs2bmNocaseWrapper(text, needle, 1);
722 static int UtilSpmBoyerMooreSearchTest02(
void)
724 uint8_t *needle = (uint8_t *)
"oPQRsT";
725 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
726 uint8_t *found = BoyerMooreWrapper(text, needle, 1);
734 static int UtilSpmBoyerMooreSearchNocaseTest02(
void)
736 uint8_t *needle = (uint8_t *)
"OpZrSt";
737 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
738 uint8_t *found = BoyerMooreNocaseWrapper(text, needle, 1);
749 static int UtilSpmSearchOffsetsTest01(
void)
751 const char *text[26][27];
752 text[0][0]=
"azzzzzzzzzzzzzzzzzzzzzzzzzz";
753 text[0][1]=
"zazzzzzzzzzzzzzzzzzzzzzzzzz";
754 text[0][2]=
"zzazzzzzzzzzzzzzzzzzzzzzzzz";
755 text[0][3]=
"zzzazzzzzzzzzzzzzzzzzzzzzzz";
756 text[0][4]=
"zzzzazzzzzzzzzzzzzzzzzzzzzz";
757 text[0][5]=
"zzzzzazzzzzzzzzzzzzzzzzzzzz";
758 text[0][6]=
"zzzzzzazzzzzzzzzzzzzzzzzzzz";
759 text[0][7]=
"zzzzzzzazzzzzzzzzzzzzzzzzzz";
760 text[0][8]=
"zzzzzzzzazzzzzzzzzzzzzzzzzz";
761 text[0][9]=
"zzzzzzzzzazzzzzzzzzzzzzzzzz";
762 text[0][10]=
"zzzzzzzzzzazzzzzzzzzzzzzzzz";
763 text[0][11]=
"zzzzzzzzzzzazzzzzzzzzzzzzzz";
764 text[0][12]=
"zzzzzzzzzzzzazzzzzzzzzzzzzz";
765 text[0][13]=
"zzzzzzzzzzzzzazzzzzzzzzzzzz";
766 text[0][14]=
"zzzzzzzzzzzzzzazzzzzzzzzzzz";
767 text[0][15]=
"zzzzzzzzzzzzzzzazzzzzzzzzzz";
768 text[0][16]=
"zzzzzzzzzzzzzzzzazzzzzzzzzz";
769 text[0][17]=
"zzzzzzzzzzzzzzzzzazzzzzzzzz";
770 text[0][18]=
"zzzzzzzzzzzzzzzzzzazzzzzzzz";
771 text[0][19]=
"zzzzzzzzzzzzzzzzzzzazzzzzzz";
772 text[0][20]=
"zzzzzzzzzzzzzzzzzzzzazzzzzz";
773 text[0][21]=
"zzzzzzzzzzzzzzzzzzzzzazzzzz";
774 text[0][22]=
"zzzzzzzzzzzzzzzzzzzzzzazzzz";
775 text[0][23]=
"zzzzzzzzzzzzzzzzzzzzzzzazzz";
776 text[0][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzazz";
777 text[0][25]=
"zzzzzzzzzzzzzzzzzzzzzzzzzaz";
778 text[0][26]=
"zzzzzzzzzzzzzzzzzzzzzzzzzza";
779 text[1][0]=
"aBzzzzzzzzzzzzzzzzzzzzzzzzz";
780 text[1][1]=
"zaBzzzzzzzzzzzzzzzzzzzzzzzz";
781 text[1][2]=
"zzaBzzzzzzzzzzzzzzzzzzzzzzz";
782 text[1][3]=
"zzzaBzzzzzzzzzzzzzzzzzzzzzz";
783 text[1][4]=
"zzzzaBzzzzzzzzzzzzzzzzzzzzz";
784 text[1][5]=
"zzzzzaBzzzzzzzzzzzzzzzzzzzz";
785 text[1][6]=
"zzzzzzaBzzzzzzzzzzzzzzzzzzz";
786 text[1][7]=
"zzzzzzzaBzzzzzzzzzzzzzzzzzz";
787 text[1][8]=
"zzzzzzzzaBzzzzzzzzzzzzzzzzz";
788 text[1][9]=
"zzzzzzzzzaBzzzzzzzzzzzzzzzz";
789 text[1][10]=
"zzzzzzzzzzaBzzzzzzzzzzzzzzz";
790 text[1][11]=
"zzzzzzzzzzzaBzzzzzzzzzzzzzz";
791 text[1][12]=
"zzzzzzzzzzzzaBzzzzzzzzzzzzz";
792 text[1][13]=
"zzzzzzzzzzzzzaBzzzzzzzzzzzz";
793 text[1][14]=
"zzzzzzzzzzzzzzaBzzzzzzzzzzz";
794 text[1][15]=
"zzzzzzzzzzzzzzzaBzzzzzzzzzz";
795 text[1][16]=
"zzzzzzzzzzzzzzzzaBzzzzzzzzz";
796 text[1][17]=
"zzzzzzzzzzzzzzzzzaBzzzzzzzz";
797 text[1][18]=
"zzzzzzzzzzzzzzzzzzaBzzzzzzz";
798 text[1][19]=
"zzzzzzzzzzzzzzzzzzzaBzzzzzz";
799 text[1][20]=
"zzzzzzzzzzzzzzzzzzzzaBzzzzz";
800 text[1][21]=
"zzzzzzzzzzzzzzzzzzzzzaBzzzz";
801 text[1][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBzzz";
802 text[1][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBzz";
803 text[1][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzaBz";
804 text[1][25]=
"zzzzzzzzzzzzzzzzzzzzzzzzzaB";
805 text[2][0]=
"aBczzzzzzzzzzzzzzzzzzzzzzzz";
806 text[2][1]=
"zaBczzzzzzzzzzzzzzzzzzzzzzz";
807 text[2][2]=
"zzaBczzzzzzzzzzzzzzzzzzzzzz";
808 text[2][3]=
"zzzaBczzzzzzzzzzzzzzzzzzzzz";
809 text[2][4]=
"zzzzaBczzzzzzzzzzzzzzzzzzzz";
810 text[2][5]=
"zzzzzaBczzzzzzzzzzzzzzzzzzz";
811 text[2][6]=
"zzzzzzaBczzzzzzzzzzzzzzzzzz";
812 text[2][7]=
"zzzzzzzaBczzzzzzzzzzzzzzzzz";
813 text[2][8]=
"zzzzzzzzaBczzzzzzzzzzzzzzzz";
814 text[2][9]=
"zzzzzzzzzaBczzzzzzzzzzzzzzz";
815 text[2][10]=
"zzzzzzzzzzaBczzzzzzzzzzzzzz";
816 text[2][11]=
"zzzzzzzzzzzaBczzzzzzzzzzzzz";
817 text[2][12]=
"zzzzzzzzzzzzaBczzzzzzzzzzzz";
818 text[2][13]=
"zzzzzzzzzzzzzaBczzzzzzzzzzz";
819 text[2][14]=
"zzzzzzzzzzzzzzaBczzzzzzzzzz";
820 text[2][15]=
"zzzzzzzzzzzzzzzaBczzzzzzzzz";
821 text[2][16]=
"zzzzzzzzzzzzzzzzaBczzzzzzzz";
822 text[2][17]=
"zzzzzzzzzzzzzzzzzaBczzzzzzz";
823 text[2][18]=
"zzzzzzzzzzzzzzzzzzaBczzzzzz";
824 text[2][19]=
"zzzzzzzzzzzzzzzzzzzaBczzzzz";
825 text[2][20]=
"zzzzzzzzzzzzzzzzzzzzaBczzzz";
826 text[2][21]=
"zzzzzzzzzzzzzzzzzzzzzaBczzz";
827 text[2][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBczz";
828 text[2][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBcz";
829 text[2][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzaBc";
830 text[3][0]=
"aBcDzzzzzzzzzzzzzzzzzzzzzzz";
831 text[3][1]=
"zaBcDzzzzzzzzzzzzzzzzzzzzzz";
832 text[3][2]=
"zzaBcDzzzzzzzzzzzzzzzzzzzzz";
833 text[3][3]=
"zzzaBcDzzzzzzzzzzzzzzzzzzzz";
834 text[3][4]=
"zzzzaBcDzzzzzzzzzzzzzzzzzzz";
835 text[3][5]=
"zzzzzaBcDzzzzzzzzzzzzzzzzzz";
836 text[3][6]=
"zzzzzzaBcDzzzzzzzzzzzzzzzzz";
837 text[3][7]=
"zzzzzzzaBcDzzzzzzzzzzzzzzzz";
838 text[3][8]=
"zzzzzzzzaBcDzzzzzzzzzzzzzzz";
839 text[3][9]=
"zzzzzzzzzaBcDzzzzzzzzzzzzzz";
840 text[3][10]=
"zzzzzzzzzzaBcDzzzzzzzzzzzzz";
841 text[3][11]=
"zzzzzzzzzzzaBcDzzzzzzzzzzzz";
842 text[3][12]=
"zzzzzzzzzzzzaBcDzzzzzzzzzzz";
843 text[3][13]=
"zzzzzzzzzzzzzaBcDzzzzzzzzzz";
844 text[3][14]=
"zzzzzzzzzzzzzzaBcDzzzzzzzzz";
845 text[3][15]=
"zzzzzzzzzzzzzzzaBcDzzzzzzzz";
846 text[3][16]=
"zzzzzzzzzzzzzzzzaBcDzzzzzzz";
847 text[3][17]=
"zzzzzzzzzzzzzzzzzaBcDzzzzzz";
848 text[3][18]=
"zzzzzzzzzzzzzzzzzzaBcDzzzzz";
849 text[3][19]=
"zzzzzzzzzzzzzzzzzzzaBcDzzzz";
850 text[3][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDzzz";
851 text[3][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDzz";
852 text[3][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBcDz";
853 text[3][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBcD";
854 text[4][0]=
"aBcDezzzzzzzzzzzzzzzzzzzzzz";
855 text[4][1]=
"zaBcDezzzzzzzzzzzzzzzzzzzzz";
856 text[4][2]=
"zzaBcDezzzzzzzzzzzzzzzzzzzz";
857 text[4][3]=
"zzzaBcDezzzzzzzzzzzzzzzzzzz";
858 text[4][4]=
"zzzzaBcDezzzzzzzzzzzzzzzzzz";
859 text[4][5]=
"zzzzzaBcDezzzzzzzzzzzzzzzzz";
860 text[4][6]=
"zzzzzzaBcDezzzzzzzzzzzzzzzz";
861 text[4][7]=
"zzzzzzzaBcDezzzzzzzzzzzzzzz";
862 text[4][8]=
"zzzzzzzzaBcDezzzzzzzzzzzzzz";
863 text[4][9]=
"zzzzzzzzzaBcDezzzzzzzzzzzzz";
864 text[4][10]=
"zzzzzzzzzzaBcDezzzzzzzzzzzz";
865 text[4][11]=
"zzzzzzzzzzzaBcDezzzzzzzzzzz";
866 text[4][12]=
"zzzzzzzzzzzzaBcDezzzzzzzzzz";
867 text[4][13]=
"zzzzzzzzzzzzzaBcDezzzzzzzzz";
868 text[4][14]=
"zzzzzzzzzzzzzzaBcDezzzzzzzz";
869 text[4][15]=
"zzzzzzzzzzzzzzzaBcDezzzzzzz";
870 text[4][16]=
"zzzzzzzzzzzzzzzzaBcDezzzzzz";
871 text[4][17]=
"zzzzzzzzzzzzzzzzzaBcDezzzzz";
872 text[4][18]=
"zzzzzzzzzzzzzzzzzzaBcDezzzz";
873 text[4][19]=
"zzzzzzzzzzzzzzzzzzzaBcDezzz";
874 text[4][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDezz";
875 text[4][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDez";
876 text[4][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBcDe";
877 text[5][0]=
"aBcDeFzzzzzzzzzzzzzzzzzzzzz";
878 text[5][1]=
"zaBcDeFzzzzzzzzzzzzzzzzzzzz";
879 text[5][2]=
"zzaBcDeFzzzzzzzzzzzzzzzzzzz";
880 text[5][3]=
"zzzaBcDeFzzzzzzzzzzzzzzzzzz";
881 text[5][4]=
"zzzzaBcDeFzzzzzzzzzzzzzzzzz";
882 text[5][5]=
"zzzzzaBcDeFzzzzzzzzzzzzzzzz";
883 text[5][6]=
"zzzzzzaBcDeFzzzzzzzzzzzzzzz";
884 text[5][7]=
"zzzzzzzaBcDeFzzzzzzzzzzzzzz";
885 text[5][8]=
"zzzzzzzzaBcDeFzzzzzzzzzzzzz";
886 text[5][9]=
"zzzzzzzzzaBcDeFzzzzzzzzzzzz";
887 text[5][10]=
"zzzzzzzzzzaBcDeFzzzzzzzzzzz";
888 text[5][11]=
"zzzzzzzzzzzaBcDeFzzzzzzzzzz";
889 text[5][12]=
"zzzzzzzzzzzzaBcDeFzzzzzzzzz";
890 text[5][13]=
"zzzzzzzzzzzzzaBcDeFzzzzzzzz";
891 text[5][14]=
"zzzzzzzzzzzzzzaBcDeFzzzzzzz";
892 text[5][15]=
"zzzzzzzzzzzzzzzaBcDeFzzzzzz";
893 text[5][16]=
"zzzzzzzzzzzzzzzzaBcDeFzzzzz";
894 text[5][17]=
"zzzzzzzzzzzzzzzzzaBcDeFzzzz";
895 text[5][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFzzz";
896 text[5][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFzz";
897 text[5][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFz";
898 text[5][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDeF";
899 text[6][0]=
"aBcDeFgzzzzzzzzzzzzzzzzzzzz";
900 text[6][1]=
"zaBcDeFgzzzzzzzzzzzzzzzzzzz";
901 text[6][2]=
"zzaBcDeFgzzzzzzzzzzzzzzzzzz";
902 text[6][3]=
"zzzaBcDeFgzzzzzzzzzzzzzzzzz";
903 text[6][4]=
"zzzzaBcDeFgzzzzzzzzzzzzzzzz";
904 text[6][5]=
"zzzzzaBcDeFgzzzzzzzzzzzzzzz";
905 text[6][6]=
"zzzzzzaBcDeFgzzzzzzzzzzzzzz";
906 text[6][7]=
"zzzzzzzaBcDeFgzzzzzzzzzzzzz";
907 text[6][8]=
"zzzzzzzzaBcDeFgzzzzzzzzzzzz";
908 text[6][9]=
"zzzzzzzzzaBcDeFgzzzzzzzzzzz";
909 text[6][10]=
"zzzzzzzzzzaBcDeFgzzzzzzzzzz";
910 text[6][11]=
"zzzzzzzzzzzaBcDeFgzzzzzzzzz";
911 text[6][12]=
"zzzzzzzzzzzzaBcDeFgzzzzzzzz";
912 text[6][13]=
"zzzzzzzzzzzzzaBcDeFgzzzzzzz";
913 text[6][14]=
"zzzzzzzzzzzzzzaBcDeFgzzzzzz";
914 text[6][15]=
"zzzzzzzzzzzzzzzaBcDeFgzzzzz";
915 text[6][16]=
"zzzzzzzzzzzzzzzzaBcDeFgzzzz";
916 text[6][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgzzz";
917 text[6][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgzz";
918 text[6][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFgz";
919 text[6][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
920 text[7][0]=
"aBcDeFgHzzzzzzzzzzzzzzzzzzz";
921 text[7][1]=
"zaBcDeFgHzzzzzzzzzzzzzzzzzz";
922 text[7][2]=
"zzaBcDeFgHzzzzzzzzzzzzzzzzz";
923 text[7][3]=
"zzzaBcDeFgHzzzzzzzzzzzzzzzz";
924 text[7][4]=
"zzzzaBcDeFgHzzzzzzzzzzzzzzz";
925 text[7][5]=
"zzzzzaBcDeFgHzzzzzzzzzzzzzz";
926 text[7][6]=
"zzzzzzaBcDeFgHzzzzzzzzzzzzz";
927 text[7][7]=
"zzzzzzzaBcDeFgHzzzzzzzzzzzz";
928 text[7][8]=
"zzzzzzzzaBcDeFgHzzzzzzzzzzz";
929 text[7][9]=
"zzzzzzzzzaBcDeFgHzzzzzzzzzz";
930 text[7][10]=
"zzzzzzzzzzaBcDeFgHzzzzzzzzz";
931 text[7][11]=
"zzzzzzzzzzzaBcDeFgHzzzzzzzz";
932 text[7][12]=
"zzzzzzzzzzzzaBcDeFgHzzzzzzz";
933 text[7][13]=
"zzzzzzzzzzzzzaBcDeFgHzzzzzz";
934 text[7][14]=
"zzzzzzzzzzzzzzaBcDeFgHzzzzz";
935 text[7][15]=
"zzzzzzzzzzzzzzzaBcDeFgHzzzz";
936 text[7][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHzzz";
937 text[7][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHzz";
938 text[7][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgHz";
939 text[7][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFgH";
940 text[8][0]=
"aBcDeFgHizzzzzzzzzzzzzzzzzz";
941 text[8][1]=
"zaBcDeFgHizzzzzzzzzzzzzzzzz";
942 text[8][2]=
"zzaBcDeFgHizzzzzzzzzzzzzzzz";
943 text[8][3]=
"zzzaBcDeFgHizzzzzzzzzzzzzzz";
944 text[8][4]=
"zzzzaBcDeFgHizzzzzzzzzzzzzz";
945 text[8][5]=
"zzzzzaBcDeFgHizzzzzzzzzzzzz";
946 text[8][6]=
"zzzzzzaBcDeFgHizzzzzzzzzzzz";
947 text[8][7]=
"zzzzzzzaBcDeFgHizzzzzzzzzzz";
948 text[8][8]=
"zzzzzzzzaBcDeFgHizzzzzzzzzz";
949 text[8][9]=
"zzzzzzzzzaBcDeFgHizzzzzzzzz";
950 text[8][10]=
"zzzzzzzzzzaBcDeFgHizzzzzzzz";
951 text[8][11]=
"zzzzzzzzzzzaBcDeFgHizzzzzzz";
952 text[8][12]=
"zzzzzzzzzzzzaBcDeFgHizzzzzz";
953 text[8][13]=
"zzzzzzzzzzzzzaBcDeFgHizzzzz";
954 text[8][14]=
"zzzzzzzzzzzzzzaBcDeFgHizzzz";
955 text[8][15]=
"zzzzzzzzzzzzzzzaBcDeFgHizzz";
956 text[8][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHizz";
957 text[8][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHiz";
958 text[8][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgHi";
959 text[9][0]=
"aBcDeFgHiJzzzzzzzzzzzzzzzzz";
960 text[9][1]=
"zaBcDeFgHiJzzzzzzzzzzzzzzzz";
961 text[9][2]=
"zzaBcDeFgHiJzzzzzzzzzzzzzzz";
962 text[9][3]=
"zzzaBcDeFgHiJzzzzzzzzzzzzzz";
963 text[9][4]=
"zzzzaBcDeFgHiJzzzzzzzzzzzzz";
964 text[9][5]=
"zzzzzaBcDeFgHiJzzzzzzzzzzzz";
965 text[9][6]=
"zzzzzzaBcDeFgHiJzzzzzzzzzzz";
966 text[9][7]=
"zzzzzzzaBcDeFgHiJzzzzzzzzzz";
967 text[9][8]=
"zzzzzzzzaBcDeFgHiJzzzzzzzzz";
968 text[9][9]=
"zzzzzzzzzaBcDeFgHiJzzzzzzzz";
969 text[9][10]=
"zzzzzzzzzzaBcDeFgHiJzzzzzzz";
970 text[9][11]=
"zzzzzzzzzzzaBcDeFgHiJzzzzzz";
971 text[9][12]=
"zzzzzzzzzzzzaBcDeFgHiJzzzzz";
972 text[9][13]=
"zzzzzzzzzzzzzaBcDeFgHiJzzzz";
973 text[9][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJzzz";
974 text[9][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJzz";
975 text[9][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHiJz";
976 text[9][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHiJ";
977 text[10][0]=
"aBcDeFgHiJkzzzzzzzzzzzzzzzz";
978 text[10][1]=
"zaBcDeFgHiJkzzzzzzzzzzzzzzz";
979 text[10][2]=
"zzaBcDeFgHiJkzzzzzzzzzzzzzz";
980 text[10][3]=
"zzzaBcDeFgHiJkzzzzzzzzzzzzz";
981 text[10][4]=
"zzzzaBcDeFgHiJkzzzzzzzzzzzz";
982 text[10][5]=
"zzzzzaBcDeFgHiJkzzzzzzzzzzz";
983 text[10][6]=
"zzzzzzaBcDeFgHiJkzzzzzzzzzz";
984 text[10][7]=
"zzzzzzzaBcDeFgHiJkzzzzzzzzz";
985 text[10][8]=
"zzzzzzzzaBcDeFgHiJkzzzzzzzz";
986 text[10][9]=
"zzzzzzzzzaBcDeFgHiJkzzzzzzz";
987 text[10][10]=
"zzzzzzzzzzaBcDeFgHiJkzzzzzz";
988 text[10][11]=
"zzzzzzzzzzzaBcDeFgHiJkzzzzz";
989 text[10][12]=
"zzzzzzzzzzzzaBcDeFgHiJkzzzz";
990 text[10][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkzzz";
991 text[10][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkzz";
992 text[10][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJkz";
993 text[10][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHiJk";
994 text[11][0]=
"aBcDeFgHiJkLzzzzzzzzzzzzzzz";
995 text[11][1]=
"zaBcDeFgHiJkLzzzzzzzzzzzzzz";
996 text[11][2]=
"zzaBcDeFgHiJkLzzzzzzzzzzzzz";
997 text[11][3]=
"zzzaBcDeFgHiJkLzzzzzzzzzzzz";
998 text[11][4]=
"zzzzaBcDeFgHiJkLzzzzzzzzzzz";
999 text[11][5]=
"zzzzzaBcDeFgHiJkLzzzzzzzzzz";
1000 text[11][6]=
"zzzzzzaBcDeFgHiJkLzzzzzzzzz";
1001 text[11][7]=
"zzzzzzzaBcDeFgHiJkLzzzzzzzz";
1002 text[11][8]=
"zzzzzzzzaBcDeFgHiJkLzzzzzzz";
1003 text[11][9]=
"zzzzzzzzzaBcDeFgHiJkLzzzzzz";
1004 text[11][10]=
"zzzzzzzzzzaBcDeFgHiJkLzzzzz";
1005 text[11][11]=
"zzzzzzzzzzzaBcDeFgHiJkLzzzz";
1006 text[11][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLzzz";
1007 text[11][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLzz";
1008 text[11][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkLz";
1009 text[11][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJkL";
1010 text[12][0]=
"aBcDeFgHiJkLmzzzzzzzzzzzzzz";
1011 text[12][1]=
"zaBcDeFgHiJkLmzzzzzzzzzzzzz";
1012 text[12][2]=
"zzaBcDeFgHiJkLmzzzzzzzzzzzz";
1013 text[12][3]=
"zzzaBcDeFgHiJkLmzzzzzzzzzzz";
1014 text[12][4]=
"zzzzaBcDeFgHiJkLmzzzzzzzzzz";
1015 text[12][5]=
"zzzzzaBcDeFgHiJkLmzzzzzzzzz";
1016 text[12][6]=
"zzzzzzaBcDeFgHiJkLmzzzzzzzz";
1017 text[12][7]=
"zzzzzzzaBcDeFgHiJkLmzzzzzzz";
1018 text[12][8]=
"zzzzzzzzaBcDeFgHiJkLmzzzzzz";
1019 text[12][9]=
"zzzzzzzzzaBcDeFgHiJkLmzzzzz";
1020 text[12][10]=
"zzzzzzzzzzaBcDeFgHiJkLmzzzz";
1021 text[12][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmzzz";
1022 text[12][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmzz";
1023 text[12][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLmz";
1024 text[12][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkLm";
1025 text[13][0]=
"aBcDeFgHiJkLmNzzzzzzzzzzzzz";
1026 text[13][1]=
"zaBcDeFgHiJkLmNzzzzzzzzzzzz";
1027 text[13][2]=
"zzaBcDeFgHiJkLmNzzzzzzzzzzz";
1028 text[13][3]=
"zzzaBcDeFgHiJkLmNzzzzzzzzzz";
1029 text[13][4]=
"zzzzaBcDeFgHiJkLmNzzzzzzzzz";
1030 text[13][5]=
"zzzzzaBcDeFgHiJkLmNzzzzzzzz";
1031 text[13][6]=
"zzzzzzaBcDeFgHiJkLmNzzzzzzz";
1032 text[13][7]=
"zzzzzzzaBcDeFgHiJkLmNzzzzzz";
1033 text[13][8]=
"zzzzzzzzaBcDeFgHiJkLmNzzzzz";
1034 text[13][9]=
"zzzzzzzzzaBcDeFgHiJkLmNzzzz";
1035 text[13][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNzzz";
1036 text[13][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNzz";
1037 text[13][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmNz";
1038 text[13][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLmN";
1039 text[14][0]=
"aBcDeFgHiJkLmNozzzzzzzzzzzz";
1040 text[14][1]=
"zaBcDeFgHiJkLmNozzzzzzzzzzz";
1041 text[14][2]=
"zzaBcDeFgHiJkLmNozzzzzzzzzz";
1042 text[14][3]=
"zzzaBcDeFgHiJkLmNozzzzzzzzz";
1043 text[14][4]=
"zzzzaBcDeFgHiJkLmNozzzzzzzz";
1044 text[14][5]=
"zzzzzaBcDeFgHiJkLmNozzzzzzz";
1045 text[14][6]=
"zzzzzzaBcDeFgHiJkLmNozzzzzz";
1046 text[14][7]=
"zzzzzzzaBcDeFgHiJkLmNozzzzz";
1047 text[14][8]=
"zzzzzzzzaBcDeFgHiJkLmNozzzz";
1048 text[14][9]=
"zzzzzzzzzaBcDeFgHiJkLmNozzz";
1049 text[14][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNozz";
1050 text[14][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNoz";
1051 text[14][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmNo";
1052 text[15][0]=
"aBcDeFgHiJkLmNoPzzzzzzzzzzz";
1053 text[15][1]=
"zaBcDeFgHiJkLmNoPzzzzzzzzzz";
1054 text[15][2]=
"zzaBcDeFgHiJkLmNoPzzzzzzzzz";
1055 text[15][3]=
"zzzaBcDeFgHiJkLmNoPzzzzzzzz";
1056 text[15][4]=
"zzzzaBcDeFgHiJkLmNoPzzzzzzz";
1057 text[15][5]=
"zzzzzaBcDeFgHiJkLmNoPzzzzzz";
1058 text[15][6]=
"zzzzzzaBcDeFgHiJkLmNoPzzzzz";
1059 text[15][7]=
"zzzzzzzaBcDeFgHiJkLmNoPzzzz";
1060 text[15][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPzzz";
1061 text[15][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPzz";
1062 text[15][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNoPz";
1063 text[15][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNoP";
1064 text[16][0]=
"aBcDeFgHiJkLmNoPqzzzzzzzzzz";
1065 text[16][1]=
"zaBcDeFgHiJkLmNoPqzzzzzzzzz";
1066 text[16][2]=
"zzaBcDeFgHiJkLmNoPqzzzzzzzz";
1067 text[16][3]=
"zzzaBcDeFgHiJkLmNoPqzzzzzzz";
1068 text[16][4]=
"zzzzaBcDeFgHiJkLmNoPqzzzzzz";
1069 text[16][5]=
"zzzzzaBcDeFgHiJkLmNoPqzzzzz";
1070 text[16][6]=
"zzzzzzaBcDeFgHiJkLmNoPqzzzz";
1071 text[16][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqzzz";
1072 text[16][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqzz";
1073 text[16][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPqz";
1074 text[16][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNoPq";
1075 text[17][0]=
"aBcDeFgHiJkLmNoPqRzzzzzzzzz";
1076 text[17][1]=
"zaBcDeFgHiJkLmNoPqRzzzzzzzz";
1077 text[17][2]=
"zzaBcDeFgHiJkLmNoPqRzzzzzzz";
1078 text[17][3]=
"zzzaBcDeFgHiJkLmNoPqRzzzzzz";
1079 text[17][4]=
"zzzzaBcDeFgHiJkLmNoPqRzzzzz";
1080 text[17][5]=
"zzzzzaBcDeFgHiJkLmNoPqRzzzz";
1081 text[17][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRzzz";
1082 text[17][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRzz";
1083 text[17][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqRz";
1084 text[17][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPqR";
1085 text[18][0]=
"aBcDeFgHiJkLmNoPqRszzzzzzzz";
1086 text[18][1]=
"zaBcDeFgHiJkLmNoPqRszzzzzzz";
1087 text[18][2]=
"zzaBcDeFgHiJkLmNoPqRszzzzzz";
1088 text[18][3]=
"zzzaBcDeFgHiJkLmNoPqRszzzzz";
1089 text[18][4]=
"zzzzaBcDeFgHiJkLmNoPqRszzzz";
1090 text[18][5]=
"zzzzzaBcDeFgHiJkLmNoPqRszzz";
1091 text[18][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRszz";
1092 text[18][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRsz";
1093 text[18][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqRs";
1094 text[19][0]=
"aBcDeFgHiJkLmNoPqRsTzzzzzzz";
1095 text[19][1]=
"zaBcDeFgHiJkLmNoPqRsTzzzzzz";
1096 text[19][2]=
"zzaBcDeFgHiJkLmNoPqRsTzzzzz";
1097 text[19][3]=
"zzzaBcDeFgHiJkLmNoPqRsTzzzz";
1098 text[19][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTzzz";
1099 text[19][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTzz";
1100 text[19][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRsTz";
1101 text[19][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRsT";
1102 text[20][0]=
"aBcDeFgHiJkLmNoPqRsTuzzzzzz";
1103 text[20][1]=
"zaBcDeFgHiJkLmNoPqRsTuzzzzz";
1104 text[20][2]=
"zzaBcDeFgHiJkLmNoPqRsTuzzzz";
1105 text[20][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuzzz";
1106 text[20][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuzz";
1107 text[20][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTuz";
1108 text[20][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRsTu";
1109 text[21][0]=
"aBcDeFgHiJkLmNoPqRsTuVzzzzz";
1110 text[21][1]=
"zaBcDeFgHiJkLmNoPqRsTuVzzzz";
1111 text[21][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVzzz";
1112 text[21][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVzz";
1113 text[21][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuVz";
1114 text[21][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTuV";
1115 text[22][0]=
"aBcDeFgHiJkLmNoPqRsTuVwzzzz";
1116 text[22][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwzzz";
1117 text[22][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwzz";
1118 text[22][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVwz";
1119 text[22][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuVw";
1120 text[23][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXzzz";
1121 text[23][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXzz";
1122 text[23][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwXz";
1123 text[23][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVwX";
1124 text[24][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXyzz";
1125 text[24][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXyz";
1126 text[24][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwXy";
1127 text[25][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXyZz";
1128 text[25][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXyZ";
1130 const char *needle[26];
1137 needle[6]=
"aBcDeFg";
1138 needle[7]=
"aBcDeFgH";
1139 needle[8]=
"aBcDeFgHi";
1140 needle[9]=
"aBcDeFgHiJ";
1141 needle[10]=
"aBcDeFgHiJk";
1142 needle[11]=
"aBcDeFgHiJkL";
1143 needle[12]=
"aBcDeFgHiJkLm";
1144 needle[13]=
"aBcDeFgHiJkLmN";
1145 needle[14]=
"aBcDeFgHiJkLmNo";
1146 needle[15]=
"aBcDeFgHiJkLmNoP";
1147 needle[16]=
"aBcDeFgHiJkLmNoPq";
1148 needle[17]=
"aBcDeFgHiJkLmNoPqR";
1149 needle[18]=
"aBcDeFgHiJkLmNoPqRs";
1150 needle[19]=
"aBcDeFgHiJkLmNoPqRsT";
1151 needle[20]=
"aBcDeFgHiJkLmNoPqRsTu";
1152 needle[21]=
"aBcDeFgHiJkLmNoPqRsTuV";
1153 needle[22]=
"aBcDeFgHiJkLmNoPqRsTuVw";
1154 needle[23]=
"aBcDeFgHiJkLmNoPqRsTuVwX";
1155 needle[24]=
"aBcDeFgHiJkLmNoPqRsTuVwXy";
1156 needle[25]=
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
1159 uint8_t *found = NULL;
1160 for (i = 0; i < 26; i++) {
1161 for (j = 0; j <= (26 - i); j++) {
1162 found = BasicSearchWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1164 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i][j]);
1167 found = Bs2bmWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1169 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i][j]);
1172 found = BoyerMooreWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1174 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i][j]);
1185 static int UtilSpmSearchOffsetsNocaseTest01(
void)
1187 const char *text[26][27];
1188 text[0][0]=
"azzzzzzzzzzzzzzzzzzzzzzzzzz";
1189 text[0][1]=
"zazzzzzzzzzzzzzzzzzzzzzzzzz";
1190 text[0][2]=
"zzazzzzzzzzzzzzzzzzzzzzzzzz";
1191 text[0][3]=
"zzzazzzzzzzzzzzzzzzzzzzzzzz";
1192 text[0][4]=
"zzzzazzzzzzzzzzzzzzzzzzzzzz";
1193 text[0][5]=
"zzzzzazzzzzzzzzzzzzzzzzzzzz";
1194 text[0][6]=
"zzzzzzazzzzzzzzzzzzzzzzzzzz";
1195 text[0][7]=
"zzzzzzzazzzzzzzzzzzzzzzzzzz";
1196 text[0][8]=
"zzzzzzzzazzzzzzzzzzzzzzzzzz";
1197 text[0][9]=
"zzzzzzzzzazzzzzzzzzzzzzzzzz";
1198 text[0][10]=
"zzzzzzzzzzazzzzzzzzzzzzzzzz";
1199 text[0][11]=
"zzzzzzzzzzzazzzzzzzzzzzzzzz";
1200 text[0][12]=
"zzzzzzzzzzzzazzzzzzzzzzzzzz";
1201 text[0][13]=
"zzzzzzzzzzzzzazzzzzzzzzzzzz";
1202 text[0][14]=
"zzzzzzzzzzzzzzazzzzzzzzzzzz";
1203 text[0][15]=
"zzzzzzzzzzzzzzzazzzzzzzzzzz";
1204 text[0][16]=
"zzzzzzzzzzzzzzzzazzzzzzzzzz";
1205 text[0][17]=
"zzzzzzzzzzzzzzzzzazzzzzzzzz";
1206 text[0][18]=
"zzzzzzzzzzzzzzzzzzazzzzzzzz";
1207 text[0][19]=
"zzzzzzzzzzzzzzzzzzzazzzzzzz";
1208 text[0][20]=
"zzzzzzzzzzzzzzzzzzzzazzzzzz";
1209 text[0][21]=
"zzzzzzzzzzzzzzzzzzzzzazzzzz";
1210 text[0][22]=
"zzzzzzzzzzzzzzzzzzzzzzazzzz";
1211 text[0][23]=
"zzzzzzzzzzzzzzzzzzzzzzzazzz";
1212 text[0][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzazz";
1213 text[0][25]=
"zzzzzzzzzzzzzzzzzzzzzzzzzaz";
1214 text[0][26]=
"zzzzzzzzzzzzzzzzzzzzzzzzzza";
1215 text[1][0]=
"aBzzzzzzzzzzzzzzzzzzzzzzzzz";
1216 text[1][1]=
"zaBzzzzzzzzzzzzzzzzzzzzzzzz";
1217 text[1][2]=
"zzaBzzzzzzzzzzzzzzzzzzzzzzz";
1218 text[1][3]=
"zzzaBzzzzzzzzzzzzzzzzzzzzzz";
1219 text[1][4]=
"zzzzaBzzzzzzzzzzzzzzzzzzzzz";
1220 text[1][5]=
"zzzzzaBzzzzzzzzzzzzzzzzzzzz";
1221 text[1][6]=
"zzzzzzaBzzzzzzzzzzzzzzzzzzz";
1222 text[1][7]=
"zzzzzzzaBzzzzzzzzzzzzzzzzzz";
1223 text[1][8]=
"zzzzzzzzaBzzzzzzzzzzzzzzzzz";
1224 text[1][9]=
"zzzzzzzzzaBzzzzzzzzzzzzzzzz";
1225 text[1][10]=
"zzzzzzzzzzaBzzzzzzzzzzzzzzz";
1226 text[1][11]=
"zzzzzzzzzzzaBzzzzzzzzzzzzzz";
1227 text[1][12]=
"zzzzzzzzzzzzaBzzzzzzzzzzzzz";
1228 text[1][13]=
"zzzzzzzzzzzzzaBzzzzzzzzzzzz";
1229 text[1][14]=
"zzzzzzzzzzzzzzaBzzzzzzzzzzz";
1230 text[1][15]=
"zzzzzzzzzzzzzzzaBzzzzzzzzzz";
1231 text[1][16]=
"zzzzzzzzzzzzzzzzaBzzzzzzzzz";
1232 text[1][17]=
"zzzzzzzzzzzzzzzzzaBzzzzzzzz";
1233 text[1][18]=
"zzzzzzzzzzzzzzzzzzaBzzzzzzz";
1234 text[1][19]=
"zzzzzzzzzzzzzzzzzzzaBzzzzzz";
1235 text[1][20]=
"zzzzzzzzzzzzzzzzzzzzaBzzzzz";
1236 text[1][21]=
"zzzzzzzzzzzzzzzzzzzzzaBzzzz";
1237 text[1][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBzzz";
1238 text[1][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBzz";
1239 text[1][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzaBz";
1240 text[1][25]=
"zzzzzzzzzzzzzzzzzzzzzzzzzaB";
1241 text[2][0]=
"aBczzzzzzzzzzzzzzzzzzzzzzzz";
1242 text[2][1]=
"zaBczzzzzzzzzzzzzzzzzzzzzzz";
1243 text[2][2]=
"zzaBczzzzzzzzzzzzzzzzzzzzzz";
1244 text[2][3]=
"zzzaBczzzzzzzzzzzzzzzzzzzzz";
1245 text[2][4]=
"zzzzaBczzzzzzzzzzzzzzzzzzzz";
1246 text[2][5]=
"zzzzzaBczzzzzzzzzzzzzzzzzzz";
1247 text[2][6]=
"zzzzzzaBczzzzzzzzzzzzzzzzzz";
1248 text[2][7]=
"zzzzzzzaBczzzzzzzzzzzzzzzzz";
1249 text[2][8]=
"zzzzzzzzaBczzzzzzzzzzzzzzzz";
1250 text[2][9]=
"zzzzzzzzzaBczzzzzzzzzzzzzzz";
1251 text[2][10]=
"zzzzzzzzzzaBczzzzzzzzzzzzzz";
1252 text[2][11]=
"zzzzzzzzzzzaBczzzzzzzzzzzzz";
1253 text[2][12]=
"zzzzzzzzzzzzaBczzzzzzzzzzzz";
1254 text[2][13]=
"zzzzzzzzzzzzzaBczzzzzzzzzzz";
1255 text[2][14]=
"zzzzzzzzzzzzzzaBczzzzzzzzzz";
1256 text[2][15]=
"zzzzzzzzzzzzzzzaBczzzzzzzzz";
1257 text[2][16]=
"zzzzzzzzzzzzzzzzaBczzzzzzzz";
1258 text[2][17]=
"zzzzzzzzzzzzzzzzzaBczzzzzzz";
1259 text[2][18]=
"zzzzzzzzzzzzzzzzzzaBczzzzzz";
1260 text[2][19]=
"zzzzzzzzzzzzzzzzzzzaBczzzzz";
1261 text[2][20]=
"zzzzzzzzzzzzzzzzzzzzaBczzzz";
1262 text[2][21]=
"zzzzzzzzzzzzzzzzzzzzzaBczzz";
1263 text[2][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBczz";
1264 text[2][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBcz";
1265 text[2][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzaBc";
1266 text[3][0]=
"aBcDzzzzzzzzzzzzzzzzzzzzzzz";
1267 text[3][1]=
"zaBcDzzzzzzzzzzzzzzzzzzzzzz";
1268 text[3][2]=
"zzaBcDzzzzzzzzzzzzzzzzzzzzz";
1269 text[3][3]=
"zzzaBcDzzzzzzzzzzzzzzzzzzzz";
1270 text[3][4]=
"zzzzaBcDzzzzzzzzzzzzzzzzzzz";
1271 text[3][5]=
"zzzzzaBcDzzzzzzzzzzzzzzzzzz";
1272 text[3][6]=
"zzzzzzaBcDzzzzzzzzzzzzzzzzz";
1273 text[3][7]=
"zzzzzzzaBcDzzzzzzzzzzzzzzzz";
1274 text[3][8]=
"zzzzzzzzaBcDzzzzzzzzzzzzzzz";
1275 text[3][9]=
"zzzzzzzzzaBcDzzzzzzzzzzzzzz";
1276 text[3][10]=
"zzzzzzzzzzaBcDzzzzzzzzzzzzz";
1277 text[3][11]=
"zzzzzzzzzzzaBcDzzzzzzzzzzzz";
1278 text[3][12]=
"zzzzzzzzzzzzaBcDzzzzzzzzzzz";
1279 text[3][13]=
"zzzzzzzzzzzzzaBcDzzzzzzzzzz";
1280 text[3][14]=
"zzzzzzzzzzzzzzaBcDzzzzzzzzz";
1281 text[3][15]=
"zzzzzzzzzzzzzzzaBcDzzzzzzzz";
1282 text[3][16]=
"zzzzzzzzzzzzzzzzaBcDzzzzzzz";
1283 text[3][17]=
"zzzzzzzzzzzzzzzzzaBcDzzzzzz";
1284 text[3][18]=
"zzzzzzzzzzzzzzzzzzaBcDzzzzz";
1285 text[3][19]=
"zzzzzzzzzzzzzzzzzzzaBcDzzzz";
1286 text[3][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDzzz";
1287 text[3][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDzz";
1288 text[3][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBcDz";
1289 text[3][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBcD";
1290 text[4][0]=
"aBcDezzzzzzzzzzzzzzzzzzzzzz";
1291 text[4][1]=
"zaBcDezzzzzzzzzzzzzzzzzzzzz";
1292 text[4][2]=
"zzaBcDezzzzzzzzzzzzzzzzzzzz";
1293 text[4][3]=
"zzzaBcDezzzzzzzzzzzzzzzzzzz";
1294 text[4][4]=
"zzzzaBcDezzzzzzzzzzzzzzzzzz";
1295 text[4][5]=
"zzzzzaBcDezzzzzzzzzzzzzzzzz";
1296 text[4][6]=
"zzzzzzaBcDezzzzzzzzzzzzzzzz";
1297 text[4][7]=
"zzzzzzzaBcDezzzzzzzzzzzzzzz";
1298 text[4][8]=
"zzzzzzzzaBcDezzzzzzzzzzzzzz";
1299 text[4][9]=
"zzzzzzzzzaBcDezzzzzzzzzzzzz";
1300 text[4][10]=
"zzzzzzzzzzaBcDezzzzzzzzzzzz";
1301 text[4][11]=
"zzzzzzzzzzzaBcDezzzzzzzzzzz";
1302 text[4][12]=
"zzzzzzzzzzzzaBcDezzzzzzzzzz";
1303 text[4][13]=
"zzzzzzzzzzzzzaBcDezzzzzzzzz";
1304 text[4][14]=
"zzzzzzzzzzzzzzaBcDezzzzzzzz";
1305 text[4][15]=
"zzzzzzzzzzzzzzzaBcDezzzzzzz";
1306 text[4][16]=
"zzzzzzzzzzzzzzzzaBcDezzzzzz";
1307 text[4][17]=
"zzzzzzzzzzzzzzzzzaBcDezzzzz";
1308 text[4][18]=
"zzzzzzzzzzzzzzzzzzaBcDezzzz";
1309 text[4][19]=
"zzzzzzzzzzzzzzzzzzzaBcDezzz";
1310 text[4][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDezz";
1311 text[4][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDez";
1312 text[4][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBcDe";
1313 text[5][0]=
"aBcDeFzzzzzzzzzzzzzzzzzzzzz";
1314 text[5][1]=
"zaBcDeFzzzzzzzzzzzzzzzzzzzz";
1315 text[5][2]=
"zzaBcDeFzzzzzzzzzzzzzzzzzzz";
1316 text[5][3]=
"zzzaBcDeFzzzzzzzzzzzzzzzzzz";
1317 text[5][4]=
"zzzzaBcDeFzzzzzzzzzzzzzzzzz";
1318 text[5][5]=
"zzzzzaBcDeFzzzzzzzzzzzzzzzz";
1319 text[5][6]=
"zzzzzzaBcDeFzzzzzzzzzzzzzzz";
1320 text[5][7]=
"zzzzzzzaBcDeFzzzzzzzzzzzzzz";
1321 text[5][8]=
"zzzzzzzzaBcDeFzzzzzzzzzzzzz";
1322 text[5][9]=
"zzzzzzzzzaBcDeFzzzzzzzzzzzz";
1323 text[5][10]=
"zzzzzzzzzzaBcDeFzzzzzzzzzzz";
1324 text[5][11]=
"zzzzzzzzzzzaBcDeFzzzzzzzzzz";
1325 text[5][12]=
"zzzzzzzzzzzzaBcDeFzzzzzzzzz";
1326 text[5][13]=
"zzzzzzzzzzzzzaBcDeFzzzzzzzz";
1327 text[5][14]=
"zzzzzzzzzzzzzzaBcDeFzzzzzzz";
1328 text[5][15]=
"zzzzzzzzzzzzzzzaBcDeFzzzzzz";
1329 text[5][16]=
"zzzzzzzzzzzzzzzzaBcDeFzzzzz";
1330 text[5][17]=
"zzzzzzzzzzzzzzzzzaBcDeFzzzz";
1331 text[5][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFzzz";
1332 text[5][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFzz";
1333 text[5][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFz";
1334 text[5][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDeF";
1335 text[6][0]=
"aBcDeFgzzzzzzzzzzzzzzzzzzzz";
1336 text[6][1]=
"zaBcDeFgzzzzzzzzzzzzzzzzzzz";
1337 text[6][2]=
"zzaBcDeFgzzzzzzzzzzzzzzzzzz";
1338 text[6][3]=
"zzzaBcDeFgzzzzzzzzzzzzzzzzz";
1339 text[6][4]=
"zzzzaBcDeFgzzzzzzzzzzzzzzzz";
1340 text[6][5]=
"zzzzzaBcDeFgzzzzzzzzzzzzzzz";
1341 text[6][6]=
"zzzzzzaBcDeFgzzzzzzzzzzzzzz";
1342 text[6][7]=
"zzzzzzzaBcDeFgzzzzzzzzzzzzz";
1343 text[6][8]=
"zzzzzzzzaBcDeFgzzzzzzzzzzzz";
1344 text[6][9]=
"zzzzzzzzzaBcDeFgzzzzzzzzzzz";
1345 text[6][10]=
"zzzzzzzzzzaBcDeFgzzzzzzzzzz";
1346 text[6][11]=
"zzzzzzzzzzzaBcDeFgzzzzzzzzz";
1347 text[6][12]=
"zzzzzzzzzzzzaBcDeFgzzzzzzzz";
1348 text[6][13]=
"zzzzzzzzzzzzzaBcDeFgzzzzzzz";
1349 text[6][14]=
"zzzzzzzzzzzzzzaBcDeFgzzzzzz";
1350 text[6][15]=
"zzzzzzzzzzzzzzzaBcDeFgzzzzz";
1351 text[6][16]=
"zzzzzzzzzzzzzzzzaBcDeFgzzzz";
1352 text[6][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgzzz";
1353 text[6][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgzz";
1354 text[6][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFgz";
1355 text[6][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
1356 text[7][0]=
"aBcDeFgHzzzzzzzzzzzzzzzzzzz";
1357 text[7][1]=
"zaBcDeFgHzzzzzzzzzzzzzzzzzz";
1358 text[7][2]=
"zzaBcDeFgHzzzzzzzzzzzzzzzzz";
1359 text[7][3]=
"zzzaBcDeFgHzzzzzzzzzzzzzzzz";
1360 text[7][4]=
"zzzzaBcDeFgHzzzzzzzzzzzzzzz";
1361 text[7][5]=
"zzzzzaBcDeFgHzzzzzzzzzzzzzz";
1362 text[7][6]=
"zzzzzzaBcDeFgHzzzzzzzzzzzzz";
1363 text[7][7]=
"zzzzzzzaBcDeFgHzzzzzzzzzzzz";
1364 text[7][8]=
"zzzzzzzzaBcDeFgHzzzzzzzzzzz";
1365 text[7][9]=
"zzzzzzzzzaBcDeFgHzzzzzzzzzz";
1366 text[7][10]=
"zzzzzzzzzzaBcDeFgHzzzzzzzzz";
1367 text[7][11]=
"zzzzzzzzzzzaBcDeFgHzzzzzzzz";
1368 text[7][12]=
"zzzzzzzzzzzzaBcDeFgHzzzzzzz";
1369 text[7][13]=
"zzzzzzzzzzzzzaBcDeFgHzzzzzz";
1370 text[7][14]=
"zzzzzzzzzzzzzzaBcDeFgHzzzzz";
1371 text[7][15]=
"zzzzzzzzzzzzzzzaBcDeFgHzzzz";
1372 text[7][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHzzz";
1373 text[7][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHzz";
1374 text[7][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgHz";
1375 text[7][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFgH";
1376 text[8][0]=
"aBcDeFgHizzzzzzzzzzzzzzzzzz";
1377 text[8][1]=
"zaBcDeFgHizzzzzzzzzzzzzzzzz";
1378 text[8][2]=
"zzaBcDeFgHizzzzzzzzzzzzzzzz";
1379 text[8][3]=
"zzzaBcDeFgHizzzzzzzzzzzzzzz";
1380 text[8][4]=
"zzzzaBcDeFgHizzzzzzzzzzzzzz";
1381 text[8][5]=
"zzzzzaBcDeFgHizzzzzzzzzzzzz";
1382 text[8][6]=
"zzzzzzaBcDeFgHizzzzzzzzzzzz";
1383 text[8][7]=
"zzzzzzzaBcDeFgHizzzzzzzzzzz";
1384 text[8][8]=
"zzzzzzzzaBcDeFgHizzzzzzzzzz";
1385 text[8][9]=
"zzzzzzzzzaBcDeFgHizzzzzzzzz";
1386 text[8][10]=
"zzzzzzzzzzaBcDeFgHizzzzzzzz";
1387 text[8][11]=
"zzzzzzzzzzzaBcDeFgHizzzzzzz";
1388 text[8][12]=
"zzzzzzzzzzzzaBcDeFgHizzzzzz";
1389 text[8][13]=
"zzzzzzzzzzzzzaBcDeFgHizzzzz";
1390 text[8][14]=
"zzzzzzzzzzzzzzaBcDeFgHizzzz";
1391 text[8][15]=
"zzzzzzzzzzzzzzzaBcDeFgHizzz";
1392 text[8][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHizz";
1393 text[8][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHiz";
1394 text[8][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgHi";
1395 text[9][0]=
"aBcDeFgHiJzzzzzzzzzzzzzzzzz";
1396 text[9][1]=
"zaBcDeFgHiJzzzzzzzzzzzzzzzz";
1397 text[9][2]=
"zzaBcDeFgHiJzzzzzzzzzzzzzzz";
1398 text[9][3]=
"zzzaBcDeFgHiJzzzzzzzzzzzzzz";
1399 text[9][4]=
"zzzzaBcDeFgHiJzzzzzzzzzzzzz";
1400 text[9][5]=
"zzzzzaBcDeFgHiJzzzzzzzzzzzz";
1401 text[9][6]=
"zzzzzzaBcDeFgHiJzzzzzzzzzzz";
1402 text[9][7]=
"zzzzzzzaBcDeFgHiJzzzzzzzzzz";
1403 text[9][8]=
"zzzzzzzzaBcDeFgHiJzzzzzzzzz";
1404 text[9][9]=
"zzzzzzzzzaBcDeFgHiJzzzzzzzz";
1405 text[9][10]=
"zzzzzzzzzzaBcDeFgHiJzzzzzzz";
1406 text[9][11]=
"zzzzzzzzzzzaBcDeFgHiJzzzzzz";
1407 text[9][12]=
"zzzzzzzzzzzzaBcDeFgHiJzzzzz";
1408 text[9][13]=
"zzzzzzzzzzzzzaBcDeFgHiJzzzz";
1409 text[9][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJzzz";
1410 text[9][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJzz";
1411 text[9][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHiJz";
1412 text[9][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHiJ";
1413 text[10][0]=
"aBcDeFgHiJkzzzzzzzzzzzzzzzz";
1414 text[10][1]=
"zaBcDeFgHiJkzzzzzzzzzzzzzzz";
1415 text[10][2]=
"zzaBcDeFgHiJkzzzzzzzzzzzzzz";
1416 text[10][3]=
"zzzaBcDeFgHiJkzzzzzzzzzzzzz";
1417 text[10][4]=
"zzzzaBcDeFgHiJkzzzzzzzzzzzz";
1418 text[10][5]=
"zzzzzaBcDeFgHiJkzzzzzzzzzzz";
1419 text[10][6]=
"zzzzzzaBcDeFgHiJkzzzzzzzzzz";
1420 text[10][7]=
"zzzzzzzaBcDeFgHiJkzzzzzzzzz";
1421 text[10][8]=
"zzzzzzzzaBcDeFgHiJkzzzzzzzz";
1422 text[10][9]=
"zzzzzzzzzaBcDeFgHiJkzzzzzzz";
1423 text[10][10]=
"zzzzzzzzzzaBcDeFgHiJkzzzzzz";
1424 text[10][11]=
"zzzzzzzzzzzaBcDeFgHiJkzzzzz";
1425 text[10][12]=
"zzzzzzzzzzzzaBcDeFgHiJkzzzz";
1426 text[10][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkzzz";
1427 text[10][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkzz";
1428 text[10][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJkz";
1429 text[10][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHiJk";
1430 text[11][0]=
"aBcDeFgHiJkLzzzzzzzzzzzzzzz";
1431 text[11][1]=
"zaBcDeFgHiJkLzzzzzzzzzzzzzz";
1432 text[11][2]=
"zzaBcDeFgHiJkLzzzzzzzzzzzzz";
1433 text[11][3]=
"zzzaBcDeFgHiJkLzzzzzzzzzzzz";
1434 text[11][4]=
"zzzzaBcDeFgHiJkLzzzzzzzzzzz";
1435 text[11][5]=
"zzzzzaBcDeFgHiJkLzzzzzzzzzz";
1436 text[11][6]=
"zzzzzzaBcDeFgHiJkLzzzzzzzzz";
1437 text[11][7]=
"zzzzzzzaBcDeFgHiJkLzzzzzzzz";
1438 text[11][8]=
"zzzzzzzzaBcDeFgHiJkLzzzzzzz";
1439 text[11][9]=
"zzzzzzzzzaBcDeFgHiJkLzzzzzz";
1440 text[11][10]=
"zzzzzzzzzzaBcDeFgHiJkLzzzzz";
1441 text[11][11]=
"zzzzzzzzzzzaBcDeFgHiJkLzzzz";
1442 text[11][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLzzz";
1443 text[11][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLzz";
1444 text[11][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkLz";
1445 text[11][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJkL";
1446 text[12][0]=
"aBcDeFgHiJkLmzzzzzzzzzzzzzz";
1447 text[12][1]=
"zaBcDeFgHiJkLmzzzzzzzzzzzzz";
1448 text[12][2]=
"zzaBcDeFgHiJkLmzzzzzzzzzzzz";
1449 text[12][3]=
"zzzaBcDeFgHiJkLmzzzzzzzzzzz";
1450 text[12][4]=
"zzzzaBcDeFgHiJkLmzzzzzzzzzz";
1451 text[12][5]=
"zzzzzaBcDeFgHiJkLmzzzzzzzzz";
1452 text[12][6]=
"zzzzzzaBcDeFgHiJkLmzzzzzzzz";
1453 text[12][7]=
"zzzzzzzaBcDeFgHiJkLmzzzzzzz";
1454 text[12][8]=
"zzzzzzzzaBcDeFgHiJkLmzzzzzz";
1455 text[12][9]=
"zzzzzzzzzaBcDeFgHiJkLmzzzzz";
1456 text[12][10]=
"zzzzzzzzzzaBcDeFgHiJkLmzzzz";
1457 text[12][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmzzz";
1458 text[12][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmzz";
1459 text[12][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLmz";
1460 text[12][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkLm";
1461 text[13][0]=
"aBcDeFgHiJkLmNzzzzzzzzzzzzz";
1462 text[13][1]=
"zaBcDeFgHiJkLmNzzzzzzzzzzzz";
1463 text[13][2]=
"zzaBcDeFgHiJkLmNzzzzzzzzzzz";
1464 text[13][3]=
"zzzaBcDeFgHiJkLmNzzzzzzzzzz";
1465 text[13][4]=
"zzzzaBcDeFgHiJkLmNzzzzzzzzz";
1466 text[13][5]=
"zzzzzaBcDeFgHiJkLmNzzzzzzzz";
1467 text[13][6]=
"zzzzzzaBcDeFgHiJkLmNzzzzzzz";
1468 text[13][7]=
"zzzzzzzaBcDeFgHiJkLmNzzzzzz";
1469 text[13][8]=
"zzzzzzzzaBcDeFgHiJkLmNzzzzz";
1470 text[13][9]=
"zzzzzzzzzaBcDeFgHiJkLmNzzzz";
1471 text[13][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNzzz";
1472 text[13][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNzz";
1473 text[13][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmNz";
1474 text[13][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLmN";
1475 text[14][0]=
"aBcDeFgHiJkLmNozzzzzzzzzzzz";
1476 text[14][1]=
"zaBcDeFgHiJkLmNozzzzzzzzzzz";
1477 text[14][2]=
"zzaBcDeFgHiJkLmNozzzzzzzzzz";
1478 text[14][3]=
"zzzaBcDeFgHiJkLmNozzzzzzzzz";
1479 text[14][4]=
"zzzzaBcDeFgHiJkLmNozzzzzzzz";
1480 text[14][5]=
"zzzzzaBcDeFgHiJkLmNozzzzzzz";
1481 text[14][6]=
"zzzzzzaBcDeFgHiJkLmNozzzzzz";
1482 text[14][7]=
"zzzzzzzaBcDeFgHiJkLmNozzzzz";
1483 text[14][8]=
"zzzzzzzzaBcDeFgHiJkLmNozzzz";
1484 text[14][9]=
"zzzzzzzzzaBcDeFgHiJkLmNozzz";
1485 text[14][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNozz";
1486 text[14][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNoz";
1487 text[14][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmNo";
1488 text[15][0]=
"aBcDeFgHiJkLmNoPzzzzzzzzzzz";
1489 text[15][1]=
"zaBcDeFgHiJkLmNoPzzzzzzzzzz";
1490 text[15][2]=
"zzaBcDeFgHiJkLmNoPzzzzzzzzz";
1491 text[15][3]=
"zzzaBcDeFgHiJkLmNoPzzzzzzzz";
1492 text[15][4]=
"zzzzaBcDeFgHiJkLmNoPzzzzzzz";
1493 text[15][5]=
"zzzzzaBcDeFgHiJkLmNoPzzzzzz";
1494 text[15][6]=
"zzzzzzaBcDeFgHiJkLmNoPzzzzz";
1495 text[15][7]=
"zzzzzzzaBcDeFgHiJkLmNoPzzzz";
1496 text[15][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPzzz";
1497 text[15][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPzz";
1498 text[15][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNoPz";
1499 text[15][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNoP";
1500 text[16][0]=
"aBcDeFgHiJkLmNoPqzzzzzzzzzz";
1501 text[16][1]=
"zaBcDeFgHiJkLmNoPqzzzzzzzzz";
1502 text[16][2]=
"zzaBcDeFgHiJkLmNoPqzzzzzzzz";
1503 text[16][3]=
"zzzaBcDeFgHiJkLmNoPqzzzzzzz";
1504 text[16][4]=
"zzzzaBcDeFgHiJkLmNoPqzzzzzz";
1505 text[16][5]=
"zzzzzaBcDeFgHiJkLmNoPqzzzzz";
1506 text[16][6]=
"zzzzzzaBcDeFgHiJkLmNoPqzzzz";
1507 text[16][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqzzz";
1508 text[16][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqzz";
1509 text[16][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPqz";
1510 text[16][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNoPq";
1511 text[17][0]=
"aBcDeFgHiJkLmNoPqRzzzzzzzzz";
1512 text[17][1]=
"zaBcDeFgHiJkLmNoPqRzzzzzzzz";
1513 text[17][2]=
"zzaBcDeFgHiJkLmNoPqRzzzzzzz";
1514 text[17][3]=
"zzzaBcDeFgHiJkLmNoPqRzzzzzz";
1515 text[17][4]=
"zzzzaBcDeFgHiJkLmNoPqRzzzzz";
1516 text[17][5]=
"zzzzzaBcDeFgHiJkLmNoPqRzzzz";
1517 text[17][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRzzz";
1518 text[17][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRzz";
1519 text[17][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqRz";
1520 text[17][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPqR";
1521 text[18][0]=
"aBcDeFgHiJkLmNoPqRszzzzzzzz";
1522 text[18][1]=
"zaBcDeFgHiJkLmNoPqRszzzzzzz";
1523 text[18][2]=
"zzaBcDeFgHiJkLmNoPqRszzzzzz";
1524 text[18][3]=
"zzzaBcDeFgHiJkLmNoPqRszzzzz";
1525 text[18][4]=
"zzzzaBcDeFgHiJkLmNoPqRszzzz";
1526 text[18][5]=
"zzzzzaBcDeFgHiJkLmNoPqRszzz";
1527 text[18][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRszz";
1528 text[18][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRsz";
1529 text[18][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqRs";
1530 text[19][0]=
"aBcDeFgHiJkLmNoPqRsTzzzzzzz";
1531 text[19][1]=
"zaBcDeFgHiJkLmNoPqRsTzzzzzz";
1532 text[19][2]=
"zzaBcDeFgHiJkLmNoPqRsTzzzzz";
1533 text[19][3]=
"zzzaBcDeFgHiJkLmNoPqRsTzzzz";
1534 text[19][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTzzz";
1535 text[19][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTzz";
1536 text[19][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRsTz";
1537 text[19][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRsT";
1538 text[20][0]=
"aBcDeFgHiJkLmNoPqRsTuzzzzzz";
1539 text[20][1]=
"zaBcDeFgHiJkLmNoPqRsTuzzzzz";
1540 text[20][2]=
"zzaBcDeFgHiJkLmNoPqRsTuzzzz";
1541 text[20][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuzzz";
1542 text[20][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuzz";
1543 text[20][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTuz";
1544 text[20][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRsTu";
1545 text[21][0]=
"aBcDeFgHiJkLmNoPqRsTuVzzzzz";
1546 text[21][1]=
"zaBcDeFgHiJkLmNoPqRsTuVzzzz";
1547 text[21][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVzzz";
1548 text[21][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVzz";
1549 text[21][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuVz";
1550 text[21][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTuV";
1551 text[22][0]=
"aBcDeFgHiJkLmNoPqRsTuVwzzzz";
1552 text[22][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwzzz";
1553 text[22][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwzz";
1554 text[22][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVwz";
1555 text[22][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuVw";
1556 text[23][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXzzz";
1557 text[23][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXzz";
1558 text[23][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwXz";
1559 text[23][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVwX";
1560 text[24][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXyzz";
1561 text[24][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXyz";
1562 text[24][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwXy";
1563 text[25][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXyZz";
1564 text[25][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXyZ";
1566 const char *needle[26];
1573 needle[6]=
"AbCdEfG";
1574 needle[7]=
"AbCdEfGh";
1575 needle[8]=
"AbCdEfGhI";
1576 needle[9]=
"AbCdEfGhIJ";
1577 needle[10]=
"AbCdEfGhIjK";
1578 needle[11]=
"AbCdEfGhIjKl";
1579 needle[12]=
"AbCdEfGhIjKlM";
1580 needle[13]=
"AbCdEfGhIjKlMn";
1581 needle[14]=
"AbCdEfGhIjKlMnO";
1582 needle[15]=
"AbCdEfGhIjKlMnOp";
1583 needle[16]=
"AbCdEfGhIjKlMnOpQ";
1584 needle[17]=
"AbCdEfGhIjKlMnOpQr";
1585 needle[18]=
"AbCdEfGhIjKlMnOpQrS";
1586 needle[19]=
"AbCdEfGhIjKlMnOpQrSt";
1587 needle[20]=
"AbCdEfGhIjKlMnOpQrStU";
1588 needle[21]=
"AbCdEfGhIjKlMnOpQrStUv";
1589 needle[22]=
"AbCdEfGhIjKlMnOpQrStUvW";
1590 needle[23]=
"AbCdEfGhIjKlMnOpQrStUvWx";
1591 needle[24]=
"AbCdEfGhIjKlMnOpQrStUvWxY";
1592 needle[25]=
"AbCdEfGhIjKlMnOpQrStUvWxYZ";
1595 uint8_t *found = NULL;
1596 for (i = 0; i < 26; i++) {
1597 for (j = 0; j <= (26-i); j++) {
1598 found = BasicSearchNocaseWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1600 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i][j]);
1603 found = Bs2bmNocaseWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1605 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i][j]);
1608 found = BoyerMooreNocaseWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1610 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i][j]);
1618 #ifdef ENABLE_SEARCH_STATS
1622 static int UtilSpmSearchStatsTest01(
void)
1625 text[0]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzza";
1626 text[1]=
"aaaaaaaaazaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaazaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaazaaaaaraaaaazaaaaaaazaaaaaaaaaaaaaazaaaaaaaazaaaaaaaaazaaaaaaaaaaaaB";
1627 text[2]=
"aBaBaBaBaBaBaBaBazaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBzBaBaBaBaBaBaBzBaBaBaBaBzBaBaBaBaBaBzBaBaBaBaBaBzBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBazaBaBaBaBaBc";
1628 text[3]=
"aBcaBcaBcaBcaBczBcaBcaBzaBcaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBzaBcaBcaBcazcaBcaBcaBcaBcaBcD";
1629 text[4]=
"aBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDzBcDaBcDaBcDaBcDzBcDaBcDaBczaBcDaBcDaBczaBcDaBcDaBcDaBcDaBzDaBcDaBcDaBcDaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDaBcDaBzDaBcDaBcDaBcDaBzDaBcDaBcDaBzDaBcDaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDazcDaBcDaBcDaBcDaBcDzBcDaBcDaBcDaBcDaBcDaBcDe";
1630 text[5]=
"aBcDeaBcDeaBcDeazcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDezBcDeaBcDeaBcDzaBcDeaBcDeaBcDeazcDzaBcDeaBcDezBcDeaBzDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBczeaBcDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDzaBcDeaBcDezBcDeaBcDezBcDeaBczeaBcDeaBcDeaBzDeaBcDezBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeF";
1631 text[6]=
"aBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBczzaBcDeaBcDeaBcDzazcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDeaBczeaBcDezzzaBcDeFg";
1632 text[7]=
"aBcDeaBczeaBcDzaBcDezBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBzDzaBcDeaBcDeazcDeaBcDzaBcDeaBczeaBcDeaBcDeaBzDzaBcDeaBcDeaBcDezBcDzaBcDeaBzDeaBcDeaBcDezBcDzaBcDeaBcDeaBzDeaBcDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBrDeaBcDeaBcDezzzaBcDeFgH";
1633 text[8]=
"aBcDeaBcDeaBczzaBcDeazcDeaBcDezBcDeaBcDzaBcDeaBcDeaBcDeaBczzaBcDeaBcDeaBczeaBcDeaBcDzzBcDeaBcDeaBcDzaBczeaBcDeaBcDzaBcDeaBczeaBcDeaBcDeaBzDeaBcDeaBcDeaBzDeaBcDeaBcDzaBcDeaBcDeazcDeaBcDeaBcDzaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBczeaBcDeaBzDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHi";
1634 text[9]=
"aBcDeaBcDzaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeazcDeaBcDeaBcDzzBcDeaBcDeaBczeaBcDzaBcDezBcDeaBczeaBcDzaBcDezBcDeaBcDzaBczeaBcDeaBcDzaBcDeazcDeaBcDeaBcDzaBczeaBcDeaBcDzaBzDeaBcDeaBczeaBcDeaBcDzaBcDeaBcDeaBzDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDeaBzDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJ";
1635 text[10]=
"aBcDeaBcDeaBczeaBcDzaBczeaBcDeaBczeaBcDeaBcDzaBcDeaBcDeazcDeaBcDeaBcDeaBzDzaBcDeazcDeaBcDeazcDeaBcDzaBcDeazcDeaBcDeaBczzaBcDeaBcDeaBzDeaBcDeaBcDzaBczeaBcDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDezBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDezBcDeaBcDeaBcDeaBzDeaBcDeaBcDezzzaBcDeFgHiJk";
1636 text[11]=
"aBcDeaBcDeaBcDeaBcDeaBzDeaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDeazcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDzzBcDeaBcDeaBcDeaBcDzaBcDzaBcDeaBzDeaBcDeaBcDezBcDeaBcDeazcDeaBcDeaBcDezBcDeaBcDeaBcDeazcDeaBcDeaBzDeaBcDeaBczeaBcDeazcDeaBcDezBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkL";
1637 text[12]=
"aBcDeaBcDeaBcDeaBcDeaBzDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDeazcDeaBcDeaBcDeazcDeaBcDeaBczeaBcDeaBcDeaBcDezBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLm";
1638 text[13]=
"aBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLmN";
1639 text[14]=
"aBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDezzzaBcDeFgHiJkLmNo";
1640 text[15]=
"aBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLmNoP";
1649 needle[6]=
"aBcDeFg";
1650 needle[7]=
"aBcDeFgH";
1651 needle[8]=
"aBcDeFgHi";
1652 needle[9]=
"aBcDeFgHiJ";
1653 needle[10]=
"aBcDeFgHiJk";
1654 needle[11]=
"aBcDeFgHiJkL";
1655 needle[12]=
"aBcDeFgHiJkLm";
1656 needle[13]=
"aBcDeFgHiJkLmN";
1657 needle[14]=
"aBcDeFgHiJkLmNo";
1658 needle[15]=
"aBcDeFgHiJkLmNoP";
1661 uint8_t *found = NULL;
1662 printf(
"\nStats for text of greater length (text with a lot of partial matches, worst case for a basic search):\n");
1663 for (i = 0; i < 16; i++) {
1664 printf(
"Pattern length %d with BasicSearch:", i+1);
1665 found = BasicSearchWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1667 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
1670 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
1671 found = Bs2bmWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1673 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
1676 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
1677 found = BoyerMooreWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1679 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
1690 static int UtilSpmSearchStatsTest02(
void)
1693 text[0]=
"zzzzzzzzzzzzzzzzzza";
1694 text[1]=
"zzzzzzzzzzzzzzzzzzaB";
1695 text[2]=
"zzzzzzzzzzzzzzzzzzaBc";
1696 text[3]=
"zzzzzzzzzzzzzzzzzzaBcD";
1697 text[4]=
"zzzzzzzzzzzzzzzzzzaBcDe";
1698 text[5]=
"zzzzzzzzzzzzzzzzzzzzaBcDeF";
1699 text[6]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
1700 text[7]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgH";
1701 text[8]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
1702 text[9]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
1703 text[10]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
1704 text[11]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
1705 text[12]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
1706 text[13]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
1707 text[14]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
1708 text[15]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
1717 needle[6]=
"aBcDeFg";
1718 needle[7]=
"aBcDeFgH";
1719 needle[8]=
"aBcDeFgHi";
1720 needle[9]=
"aBcDeFgHiJ";
1721 needle[10]=
"aBcDeFgHiJk";
1722 needle[11]=
"aBcDeFgHiJkL";
1723 needle[12]=
"aBcDeFgHiJkLm";
1724 needle[13]=
"aBcDeFgHiJkLmN";
1725 needle[14]=
"aBcDeFgHiJkLmNo";
1726 needle[15]=
"aBcDeFgHiJkLmNoP";
1729 uint8_t *found = NULL;
1730 printf(
"\nStats for text of lower length:\n");
1731 for (i = 0; i < 16; i++) {
1732 printf(
"Pattern length %d with BasicSearch:", i+1);
1733 found = BasicSearchWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1735 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
1738 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
1739 found = Bs2bmWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1741 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
1744 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
1745 found = BoyerMooreWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1747 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
1756 static int UtilSpmSearchStatsTest03(
void)
1761 text[2]=
"zzzzzzaBc";
1762 text[3]=
"zzzzzzaBcD";
1763 text[4]=
"zzzzzzaBcDe";
1764 text[5]=
"zzzzzzzzaBcDeF";
1765 text[6]=
"zzzzzzzzaBcDeFg";
1766 text[7]=
"zzzzzzzzaBcDeFgH";
1767 text[8]=
"zzzzzzzzaBcDeFgHi";
1768 text[9]=
"zzzzzzzzaBcDeFgHiJ";
1769 text[10]=
"zzzzzzzzaBcDeFgHiJk";
1770 text[11]=
"zzzzzzzzaBcDeFgHiJkL";
1771 text[12]=
"zzzzzzzzaBcDeFgHiJkLm";
1772 text[13]=
"zzzzzzzzaBcDeFgHiJkLmN";
1773 text[14]=
"zzzzzzzzaBcDeFgHiJkLmNo";
1774 text[15]=
"zzzzzzzzaBcDeFgHiJkLmNoP";
1783 needle[6]=
"aBcDeFg";
1784 needle[7]=
"aBcDeFgH";
1785 needle[8]=
"aBcDeFgHi";
1786 needle[9]=
"aBcDeFgHiJ";
1787 needle[10]=
"aBcDeFgHiJk";
1788 needle[11]=
"aBcDeFgHiJkL";
1789 needle[12]=
"aBcDeFgHiJkLm";
1790 needle[13]=
"aBcDeFgHiJkLmN";
1791 needle[14]=
"aBcDeFgHiJkLmNo";
1792 needle[15]=
"aBcDeFgHiJkLmNoP";
1795 uint8_t *found = NULL;
1796 printf(
"\nStats for text of lower length (badcase for):\n");
1797 for (i = 0; i < 16; i++) {
1798 printf(
"Pattern length %d with BasicSearch:", i+1);
1799 found = BasicSearchWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1801 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
1804 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
1805 found = Bs2bmWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1807 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
1810 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
1811 found = BoyerMooreWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1813 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
1824 static int UtilSpmSearchStatsTest04(
void)
1827 text[0]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzza";
1828 text[1]=
"aaaaaaaaazaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaazaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaazaaaaaraaaaazaaaaaaazaaaaaaaaaaaaaazaaaaaaaazaaaaaaaaazaaaaaaaaaaaaB";
1829 text[2]=
"aBaBaBaBaBaBaBaBazaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBzBaBaBaBaBaBaBzBaBaBaBaBzBaBaBaBaBaBzBaBaBaBaBaBzBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBazaBaBaBaBaBc";
1830 text[3]=
"aBcaBcaBcaBcaBczBcaBcaBzaBcaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBzaBcaBcaBcazcaBcaBcaBcaBcaBcD";
1831 text[4]=
"aBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDzBcDaBcDaBcDaBcDzBcDaBcDaBczaBcDaBcDaBczaBcDaBcDaBcDaBcDaBzDaBcDaBcDaBcDaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDaBcDaBzDaBcDaBcDaBcDaBzDaBcDaBcDaBzDaBcDaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDazcDaBcDaBcDaBcDaBcDzBcDaBcDaBcDaBcDaBcDaBcDe";
1832 text[5]=
"aBcDeaBcDeaBcDeazcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDezBcDeaBcDeaBcDzaBcDeaBcDeaBcDeazcDzaBcDeaBcDezBcDeaBzDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBczeaBcDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDzaBcDeaBcDezBcDeaBcDezBcDeaBczeaBcDeaBcDeaBzDeaBcDezBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeF";
1833 text[6]=
"aBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBczzaBcDeaBcDeaBcDzazcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDeaBczeaBcDezzzaBcDeFg";
1834 text[7]=
"aBcDeaBczeaBcDzaBcDezBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBzDzaBcDeaBcDeazcDeaBcDzaBcDeaBczeaBcDeaBcDeaBzDzaBcDeaBcDeaBcDezBcDzaBcDeaBzDeaBcDeaBcDezBcDzaBcDeaBcDeaBzDeaBcDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBrDeaBcDeaBcDezzzaBcDeFgH";
1835 text[8]=
"aBcDeaBcDeaBczzaBcDeazcDeaBcDezBcDeaBcDzaBcDeaBcDeaBcDeaBczzaBcDeaBcDeaBczeaBcDeaBcDzzBcDeaBcDeaBcDzaBczeaBcDeaBcDzaBcDeaBczeaBcDeaBcDeaBzDeaBcDeaBcDeaBzDeaBcDeaBcDzaBcDeaBcDeazcDeaBcDeaBcDzaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBczeaBcDeaBzDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHi";
1836 text[9]=
"aBcDeaBcDzaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeazcDeaBcDeaBcDzzBcDeaBcDeaBczeaBcDzaBcDezBcDeaBczeaBcDzaBcDezBcDeaBcDzaBczeaBcDeaBcDzaBcDeazcDeaBcDeaBcDzaBczeaBcDeaBcDzaBzDeaBcDeaBczeaBcDeaBcDzaBcDeaBcDeaBzDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDeaBzDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJ";
1837 text[10]=
"aBcDeaBcDeaBczeaBcDzaBczeaBcDeaBczeaBcDeaBcDzaBcDeaBcDeazcDeaBcDeaBcDeaBzDzaBcDeazcDeaBcDeazcDeaBcDzaBcDeazcDeaBcDeaBczzaBcDeaBcDeaBzDeaBcDeaBcDzaBczeaBcDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDezBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDezBcDeaBcDeaBcDeaBzDeaBcDeaBcDezzzaBcDeFgHiJk";
1838 text[11]=
"aBcDeaBcDeaBcDeaBcDeaBzDeaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDeazcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDzzBcDeaBcDeaBcDeaBcDzaBcDzaBcDeaBzDeaBcDeaBcDezBcDeaBcDeazcDeaBcDeaBcDezBcDeaBcDeaBcDeazcDeaBcDeaBzDeaBcDeaBczeaBcDeazcDeaBcDezBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkL";
1839 text[12]=
"aBcDeaBcDeaBcDeaBcDeaBzDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDeazcDeaBcDeaBcDeazcDeaBcDeaBczeaBcDeaBcDeaBcDezBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLm";
1840 text[13]=
"aBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLmN";
1841 text[14]=
"aBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDezzzaBcDeFgHiJkLmNo";
1842 text[15]=
"aBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLmNoP";
1852 needle[6]=
"aBcDeFg";
1853 needle[7]=
"aBcDeFgH";
1854 needle[8]=
"aBcDeFgHi";
1855 needle[9]=
"aBcDeFgHiJ";
1856 needle[10]=
"aBcDeFgHiJk";
1857 needle[11]=
"aBcDeFgHiJkL";
1858 needle[12]=
"aBcDeFgHiJkLm";
1859 needle[13]=
"aBcDeFgHiJkLmN";
1860 needle[14]=
"aBcDeFgHiJkLmNo";
1861 needle[15]=
"aBcDeFgHiJkLmNoP";
1864 uint8_t *found = NULL;
1865 printf(
"\nStats for text of greater length:\n");
1866 for (i = 0; i < 16; i++) {
1867 printf(
"Pattern length %d with BasicSearch (Building Context):", i + 1);
1868 found = BasicSearchCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1870 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
1873 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i + 1);
1874 found = Bs2bmCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1876 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
1879 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i + 1);
1880 found = BoyerMooreCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1882 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
1885 printf(
"Pattern length %d with SpmSearch (Building Context):", i + 1);
1886 found = RawCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1888 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
1899 static int UtilSpmSearchStatsTest05(
void)
1902 text[0]=
"zzzzzzzzzzzzzzzzzza";
1903 text[1]=
"zzzzzzzzzzzzzzzzzzaB";
1904 text[2]=
"zzzzzzzzzzzzzzzzzzaBc";
1905 text[3]=
"zzzzzzzzzzzzzzzzzzaBcD";
1906 text[4]=
"zzzzzzzzzzzzzzzzzzaBcDe";
1907 text[5]=
"zzzzzzzzzzzzzzzzzzzzaBcDeF";
1908 text[6]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
1909 text[7]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgH";
1910 text[8]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
1911 text[9]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
1912 text[10]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
1913 text[11]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
1914 text[12]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
1915 text[13]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
1916 text[14]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
1917 text[15]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
1926 needle[6]=
"aBcDeFg";
1927 needle[7]=
"aBcDeFgH";
1928 needle[8]=
"aBcDeFgHi";
1929 needle[9]=
"aBcDeFgHiJ";
1930 needle[10]=
"aBcDeFgHiJk";
1931 needle[11]=
"aBcDeFgHiJkL";
1932 needle[12]=
"aBcDeFgHiJkLm";
1933 needle[13]=
"aBcDeFgHiJkLmN";
1934 needle[14]=
"aBcDeFgHiJkLmNo";
1935 needle[15]=
"aBcDeFgHiJkLmNoP";
1938 uint8_t *found = NULL;
1939 printf(
"\nStats for text of lower length:\n");
1940 for (i = 0; i < 16; i++) {
1941 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
1942 found = BasicSearchCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1944 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
1947 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
1948 found = Bs2bmCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1950 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
1953 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
1954 found = BoyerMooreCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1956 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
1965 static int UtilSpmSearchStatsTest06(
void)
1968 text[0]=
"zzzzkzzzzzzzkzzzzzza";
1969 text[1]=
"BBBBkBBBBBBBkBBBBBaB";
1970 text[2]=
"BcBckcBcBcBckcBcBcaBc";
1971 text[3]=
"BcDBkDBcDBcDkcDBcDaBcD";
1972 text[4]=
"BcDekcDeBcDekcDezzaBcDe";
1982 uint8_t *found = NULL;
1983 printf(
"\nStats for text of lower length (badcase for):\n");
1984 for (i = 0; i < 5; i++) {
1985 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
1986 found = BasicSearchCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1988 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
1991 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
1992 found = Bs2bmCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1994 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
1997 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
1998 found = BoyerMooreCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2000 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
2008 static int UtilSpmSearchStatsTest07(
void)
2025 uint8_t *found = NULL;
2026 printf(
"\nStats for text of real lower length (badcase for):\n");
2027 for (i = 0; i < 5; i++) {
2028 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
2029 found = BasicSearchCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2031 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
2034 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
2035 found = Bs2bmCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2037 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
2040 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
2041 found = BoyerMooreCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2043 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
2054 static int UtilSpmNocaseSearchStatsTest01(
void)
2057 text[0]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzza";
2058 text[1]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaB";
2059 text[2]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBc";
2060 text[3]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcD";
2061 text[4]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDe";
2062 text[5]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeF";
2063 text[6]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFg";
2064 text[7]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgH";
2065 text[8]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
2066 text[9]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
2067 text[10]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
2068 text[11]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
2069 text[12]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
2070 text[13]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
2071 text[14]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
2072 text[15]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
2081 needle[6]=
"aBcDeFg";
2082 needle[7]=
"aBcDeFgH";
2083 needle[8]=
"aBcDeFgHi";
2084 needle[9]=
"aBcDeFgHiJ";
2085 needle[10]=
"aBcDeFgHiJk";
2086 needle[11]=
"aBcDeFgHiJkL";
2087 needle[12]=
"aBcDeFgHiJkLm";
2088 needle[13]=
"aBcDeFgHiJkLmN";
2089 needle[14]=
"aBcDeFgHiJkLmNo";
2090 needle[15]=
"aBcDeFgHiJkLmNoP";
2093 uint8_t *found = NULL;
2094 printf(
"\nStats for text of greater length:\n");
2095 for (i = 0; i < 16; i++) {
2096 printf(
"Pattern length %d with BasicSearch:", i+1);
2097 found = BasicSearchNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2099 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
2102 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
2103 found = Bs2bmNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2105 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
2108 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
2109 found = BoyerMooreNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2111 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
2119 static int UtilSpmNocaseSearchStatsTest02(
void)
2122 text[0]=
"zzzzzzzzzzzzzzzzzza";
2123 text[1]=
"zzzzzzzzzzzzzzzzzzaB";
2124 text[2]=
"zzzzzzzzzzzzzzzzzzaBc";
2125 text[3]=
"zzzzzzzzzzzzzzzzzzaBcD";
2126 text[4]=
"zzzzzzzzzzzzzzzzzzaBcDe";
2127 text[5]=
"zzzzzzzzzzzzzzzzzzzzaBcDeF";
2128 text[6]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
2129 text[7]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgH";
2130 text[8]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
2131 text[9]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
2132 text[10]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
2133 text[11]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
2134 text[12]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
2135 text[13]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
2136 text[14]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
2137 text[15]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
2146 needle[6]=
"aBcDeFg";
2147 needle[7]=
"aBcDeFgH";
2148 needle[8]=
"aBcDeFgHi";
2149 needle[9]=
"aBcDeFgHiJ";
2150 needle[10]=
"aBcDeFgHiJk";
2151 needle[11]=
"aBcDeFgHiJkL";
2152 needle[12]=
"aBcDeFgHiJkLm";
2153 needle[13]=
"aBcDeFgHiJkLmN";
2154 needle[14]=
"aBcDeFgHiJkLmNo";
2155 needle[15]=
"aBcDeFgHiJkLmNoP";
2158 uint8_t *found = NULL;
2159 printf(
"\nStats for text of lower length:\n");
2160 for (i = 0; i < 16; i++) {
2161 printf(
"Pattern length %d with BasicSearch:", i+1);
2162 found = BasicSearchNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2164 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
2167 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
2168 found = Bs2bmNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2170 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
2173 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
2174 found = BoyerMooreNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2176 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
2185 static int UtilSpmNocaseSearchStatsTest03(
void)
2188 text[0]=
"zzzzkzzzzzzzkzzzzzza";
2189 text[1]=
"BBBBkBBBBBBBkBBBBBaB";
2190 text[2]=
"BcBckcBcBcBckcBcBcaBc";
2191 text[3]=
"BcDBkDBcDBcDkcDBcDaBcD";
2192 text[4]=
"BcDekcDeBcDekcDezzaBcDe";
2202 uint8_t *found = NULL;
2203 printf(
"\nStats for text of lower length (badcase for):\n");
2204 for (i = 0; i < 5; i++) {
2205 printf(
"Pattern length %d with BasicSearch:", i+1);
2206 found = BasicSearchNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2208 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
2211 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
2212 found = Bs2bmNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2214 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
2217 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
2218 found = BoyerMooreNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2220 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
2231 static int UtilSpmNocaseSearchStatsTest04(
void)
2234 text[0]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzza";
2235 text[1]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaB";
2236 text[2]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBc";
2237 text[3]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcD";
2238 text[4]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDe";
2239 text[5]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeF";
2240 text[6]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFg";
2241 text[7]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgH";
2242 text[8]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
2243 text[9]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
2244 text[10]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
2245 text[11]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
2246 text[12]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
2247 text[13]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
2248 text[14]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
2249 text[15]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
2258 needle[6]=
"aBcDeFg";
2259 needle[7]=
"aBcDeFgH";
2260 needle[8]=
"aBcDeFgHi";
2261 needle[9]=
"aBcDeFgHiJ";
2262 needle[10]=
"aBcDeFgHiJk";
2263 needle[11]=
"aBcDeFgHiJkL";
2264 needle[12]=
"aBcDeFgHiJkLm";
2265 needle[13]=
"aBcDeFgHiJkLmN";
2266 needle[14]=
"aBcDeFgHiJkLmNo";
2267 needle[15]=
"aBcDeFgHiJkLmNoP";
2270 uint8_t *found = NULL;
2271 printf(
"\nStats for text of greater length:\n");
2272 for (i = 0; i < 16; i++) {
2273 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
2274 found = BasicSearchNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2276 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
2279 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
2280 found = Bs2bmNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2282 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
2285 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
2286 found = BoyerMooreNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2288 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
2296 static int UtilSpmNocaseSearchStatsTest05(
void)
2299 text[0]=
"zzzzzzzzzzzzzzzzzza";
2300 text[1]=
"zzzzzzzzzzzzzzzzzzaB";
2301 text[2]=
"zzzzzzzzzzzzzzzzzzaBc";
2302 text[3]=
"zzzzzzzzzzzzzzzzzzaBcD";
2303 text[4]=
"zzzzzzzzzzzzzzzzzzaBcDe";
2304 text[5]=
"zzzzzzzzzzzzzzzzzzzzaBcDeF";
2305 text[6]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
2306 text[7]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgH";
2307 text[8]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
2308 text[9]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
2309 text[10]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
2310 text[11]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
2311 text[12]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
2312 text[13]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
2313 text[14]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
2314 text[15]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
2323 needle[6]=
"aBcDeFg";
2324 needle[7]=
"aBcDeFgH";
2325 needle[8]=
"aBcDeFgHi";
2326 needle[9]=
"aBcDeFgHiJ";
2327 needle[10]=
"aBcDeFgHiJk";
2328 needle[11]=
"aBcDeFgHiJkL";
2329 needle[12]=
"aBcDeFgHiJkLm";
2330 needle[13]=
"aBcDeFgHiJkLmN";
2331 needle[14]=
"aBcDeFgHiJkLmNo";
2332 needle[15]=
"aBcDeFgHiJkLmNoP";
2335 uint8_t *found = NULL;
2336 printf(
"\nStats for text of lower length:\n");
2337 for (i = 0; i < 16; i++) {
2338 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
2339 found = BasicSearchNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2341 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
2344 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
2345 found = Bs2bmNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2347 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
2350 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
2351 found = BoyerMooreNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2353 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
2362 static int UtilSpmNocaseSearchStatsTest06(
void)
2365 text[0]=
"zzzzkzzzzzzzkzzzzzza";
2366 text[1]=
"BBBBkBBBBBBBkBBBBBaB";
2367 text[2]=
"BcBckcBcBcBckcBcBcaBc";
2368 text[3]=
"BcDBkDBcDBcDkcDBcDaBcD";
2369 text[4]=
"BcDekcDeBcDekcDezzaBcDe";
2379 uint8_t *found = NULL;
2380 printf(
"\nStats for text of lower length (badcase for):\n");
2381 for (i = 0; i < 5; i++) {
2382 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
2383 found = BasicSearchNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2385 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
2388 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
2389 found = Bs2bmNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2391 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
2394 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
2395 found = BoyerMooreNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2397 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
2405 static int UtilSpmNocaseSearchStatsTest07(
void)
2422 uint8_t *found = NULL;
2423 printf(
"\nStats for text of real lower length (badcase for):\n");
2424 for (i = 0; i < 5; i++) {
2425 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
2426 found = BasicSearchNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2428 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
2431 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
2432 found = Bs2bmNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2434 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
2437 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
2438 found = BoyerMooreNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2440 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
2451 #define SPM_NO_MATCH UINT32_MAX
2464 static int SpmTestSearch(
const SpmTestData *d, uint8_t matcher)
2470 uint8_t *found = NULL;
2473 if (global_thread_ctx == NULL) {
2486 if (thread_ctx == NULL) {
2493 if (found == NULL) {
2495 printf(
" should have matched at %" PRIu32
" but didn't\n",
2500 uint32_t
offset = (uint32_t)(found - (
const uint8_t *)d->
haystack);
2502 printf(
" should have matched at %" PRIu32
2503 " but matched at %" PRIu32
"\n",
2516 static int SpmSearchTest01(
void) {
2525 {
"a", 1,
"a", 1, 0, 0},
2526 {
"a", 1,
"A", 1, 1, 0},
2527 {
"A", 1,
"A", 1, 0, 0},
2528 {
"A", 1,
"a", 1, 1, 0},
2532 {
"\x00", 1,
"test\x00test", 9, 0, 4},
2534 {
"\n", 1,
"new line\n", 9, 0, 8},
2535 {
"\n", 1,
"new line\x00\n", 10, 0, 9},
2536 {
"\xff", 1,
"abcdef\xff", 7, 0, 6},
2537 {
"\xff", 1,
"abcdef\xff", 7, 1, 6},
2538 {
"$", 1,
"dollar$", 7, 0, 6},
2539 {
"^", 1,
"caret^", 6, 0, 5},
2541 {
"Suricata", 8,
"This is a Suricata test", 23, 0, 10},
2542 {
"Suricata", 8,
"This is a suricata test", 23, 1, 10},
2543 {
"Suricata", 8,
"This is a suriCATA test", 23, 1, 10},
2544 {
"suricata", 8,
"This is a Suricata test", 23, 0,
SPM_NO_MATCH},
2545 {
"Suricata", 8,
"This is a Suricat_ test", 23, 0,
SPM_NO_MATCH},
2546 {
"Suricata", 8,
"This is a _uricata test", 23, 0,
SPM_NO_MATCH},
2548 {
"foo", 3,
"foofoofoo", 9, 0, 0},
2549 {
"foo", 3,
"_foofoofoo", 9, 0, 1},
2550 {
"FOO", 3,
"foofoofoo", 9, 1, 0},
2551 {
"FOO", 3,
"_foofoofoo", 9, 1, 1},
2552 {
"FOO", 3,
"foo Foo FOo fOo foO FOO", 23, 0, 20},
2553 {
"foo", 3,
"Foo FOo fOo foO FOO foo", 23, 0, 20},
2561 if (
m->name == NULL) {
2564 printf(
"matcher: %s\n",
m->name);
2567 for (i = 0; i <
sizeof(data)/
sizeof(data[0]); i++) {
2569 if (SpmTestSearch(d, matcher) == 0) {
2570 printf(
" test %" PRIu32
": fail\n", i);
2574 printf(
" %" PRIu32
" tests passed\n", i);
2580 static int SpmSearchTest02(
void) {
2587 static const char* needles[] = {
2589 "a",
"b",
"c",
":",
"/",
"\x7f",
"\xff",
2591 "aa",
"aaa",
"aaaaaaaaaaaaaaaaaaaaaaa",
2593 "suricata",
"meerkat",
"aardvark",
"raptor",
"marmot",
"lemming",
2595 "Suricata",
"CAPS LOCK",
"mIxEd cAsE",
2603 if (
m->name == NULL) {
2606 printf(
"matcher: %s\n",
m->name);
2611 for (i = 0; i <
sizeof(needles) /
sizeof(needles[0]); i++) {
2612 const char *needle = needles[i];
2614 for (prefix = 0; prefix < 32; prefix++) {
2617 uint16_t haystack_len = prefix + d.
needle_len;
2618 char *haystack =
SCMalloc(haystack_len);
2619 if (haystack == NULL) {
2620 printf(
"alloc failure\n");
2623 memset(haystack,
' ', haystack_len);
2631 if (SpmTestSearch(&d, matcher) == 0) {
2632 printf(
" test %" PRIu32
": fail (case-sensitive)\n", i);
2639 for (j = 0; j < haystack_len; j++) {
2642 if (SpmTestSearch(&d, matcher) == 0) {
2643 printf(
" test %" PRIu32
": fail (case-insensitive)\n", i);
2650 printf(
" %" PRIu32
" tests passed\n", i);
2660 UtRegisterTest(
"UtilSpmBasicSearchTest01", UtilSpmBasicSearchTest01);
2662 UtilSpmBasicSearchNocaseTest01);
2664 UtRegisterTest(
"UtilSpmBs2bmSearchTest01", UtilSpmBs2bmSearchTest01);
2666 UtilSpmBs2bmSearchNocaseTest01);
2669 UtilSpmBoyerMooreSearchTest01);
2671 UtilSpmBoyerMooreSearchNocaseTest01);
2673 UtilSpmBoyerMooreSearchNocaseTestIssue130);
2675 UtRegisterTest(
"UtilSpmBs2bmSearchTest02", UtilSpmBs2bmSearchTest02);
2677 UtilSpmBs2bmSearchNocaseTest02);
2679 UtRegisterTest(
"UtilSpmBasicSearchTest02", UtilSpmBasicSearchTest02);
2681 UtilSpmBasicSearchNocaseTest02);
2684 UtilSpmBoyerMooreSearchTest02);
2686 UtilSpmBoyerMooreSearchNocaseTest02);
2689 UtRegisterTest(
"UtilSpmSearchOffsetsTest01", UtilSpmSearchOffsetsTest01);
2691 UtilSpmSearchOffsetsNocaseTest01);
2697 #ifdef ENABLE_SEARCH_STATS
2699 UtRegisterTest(
"UtilSpmSearchStatsTest01", UtilSpmSearchStatsTest01);
2700 UtRegisterTest(
"UtilSpmSearchStatsTest02", UtilSpmSearchStatsTest02);
2701 UtRegisterTest(
"UtilSpmSearchStatsTest03", UtilSpmSearchStatsTest03);
2704 UtilSpmNocaseSearchStatsTest01);
2706 UtilSpmNocaseSearchStatsTest02);
2708 UtilSpmNocaseSearchStatsTest03);
2711 UtRegisterTest(
"UtilSpmSearchStatsTest04", UtilSpmSearchStatsTest04);
2712 UtRegisterTest(
"UtilSpmSearchStatsTest05", UtilSpmSearchStatsTest05);
2713 UtRegisterTest(
"UtilSpmSearchStatsTest06", UtilSpmSearchStatsTest06);
2714 UtRegisterTest(
"UtilSpmSearchStatsTest07", UtilSpmSearchStatsTest07);
2717 UtilSpmNocaseSearchStatsTest04);
2719 UtilSpmNocaseSearchStatsTest05);
2721 UtilSpmNocaseSearchStatsTest06);
2723 UtilSpmNocaseSearchStatsTest07);