57 #ifdef BUILD_HYPERSCAN
71 if ((
SCConfGet(
"spm-algo", &spm_algo)) == 1) {
72 if (spm_algo != NULL) {
73 if (strcmp(
"auto", 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 if ((spm_algo != NULL) && (strcmp(spm_algo,
"mm") == 0)) {
94 FatalError(
"Memmem (mm) support for spm-algo is "
95 "not compiled into Suricata.");
99 "in the yaml conf file: \"%s\"",
107 #if defined(BUILD_HYPERSCAN)
108 #ifdef HAVE_HS_VALID_PLATFORM
111 if (hs_valid_platform() != HS_SUCCESS) {
112 SCLogInfo(
"SSSE3 support not detected, disabling Hyperscan for "
122 #elif defined(HAVE_MEMMEM)
136 #ifdef BUILD_HYPERSCAN
137 #ifdef HAVE_HS_VALID_PLATFORM
138 if (hs_valid_platform() == HS_SUCCESS) {
155 if (global_thread_ctx == NULL) {
158 uint8_t matcher = global_thread_ctx->
matcher;
164 if (global_thread_ctx == NULL) {
167 uint8_t matcher = global_thread_ctx->
matcher;
174 if (thread_ctx == NULL) {
177 uint8_t matcher = thread_ctx->
matcher;
185 BUG_ON(global_thread_ctx == NULL);
186 uint8_t matcher = global_thread_ctx->
matcher;
197 uint8_t matcher =
ctx->matcher;
203 const uint8_t *haystack, uint32_t haystack_len)
205 uint8_t matcher =
ctx->matcher;
224 const uint8_t *needle, uint16_t needlelen)
229 return Bs2Bm(text, textlen, needle, needlelen, badchars);
242 const uint8_t *needle, uint16_t needlelen)
246 uint8_t *ret =
BoyerMoore(needle, needlelen, text, textlen, bm_ctx);
262 uint8_t *needle, uint16_t needlelen)
286 static uint8_t *BasicSearchWrapper(uint8_t *text, uint8_t *needle,
int times)
288 uint32_t textlen = strlen((
char *)text);
289 uint16_t needlelen = (uint16_t)strlen((
char *)needle);
298 for (i = 0; i < times; i++) {
299 ret =
BasicSearch(text, textlen, needle, needlelen);
306 static uint8_t *BasicSearchNocaseWrapper(uint8_t *text, uint8_t *needle,
int times)
308 uint32_t textlen = strlen((
char *)text);
309 uint16_t needlelen = (uint16_t)strlen((
char *)needle);
316 for (i = 0; i < times; i++) {
323 static uint8_t *Bs2bmWrapper(uint8_t *text, uint8_t *needle,
int times)
325 uint32_t textlen = strlen((
char *)text);
326 uint16_t needlelen = (uint16_t)strlen((
char *)needle);
336 for (i = 0; i < times; i++) {
337 ret =
Bs2Bm(text, textlen, needle, needlelen, badchars);
343 static uint8_t *Bs2bmNocaseWrapper(uint8_t *text, uint8_t *needle,
int times)
345 uint32_t textlen = strlen((
char *)text);
346 uint16_t needlelen = (uint16_t)strlen((
char *)needle);
356 for (i = 0; i < times; i++) {
357 ret =
Bs2BmNocase(text, textlen, needle, needlelen, badchars);
363 static uint8_t *BoyerMooreWrapper(uint8_t *text, uint8_t *needle,
int times)
365 uint32_t textlen = strlen((
char *)text);
366 uint16_t needlelen = (uint16_t)strlen((
char *)needle);
375 for (i = 0; i < times; i++) {
376 ret =
BoyerMoore(needle, needlelen, text, textlen, bm_ctx);
383 static uint8_t *BoyerMooreNocaseWrapper(uint8_t *text, uint8_t *in_needle,
int times)
385 uint32_t textlen = strlen((
char *)text);
386 uint16_t needlelen = (uint16_t)strlen((
char *)in_needle);
389 uint8_t *needle =
SCMalloc(needlelen);
392 memcpy(needle, in_needle, needlelen);
401 for (i = 0; i < times; i++) {
411 #ifdef ENABLE_SEARCH_STATS
413 #define STATS_TIMES 1000000
422 static uint8_t *BasicSearchCtxWrapper(uint8_t *text, uint8_t *needle,
int times)
424 uint32_t textlen = strlen((
char *)text);
425 uint16_t needlelen = strlen((
char *)needle);
432 for (i = 0; i < times; i++) {
434 ret =
BasicSearch(text, textlen, needle, needlelen);
440 static uint8_t *BasicSearchNocaseCtxWrapper(uint8_t *text, uint8_t *needle,
int times)
442 uint32_t textlen = strlen((
char *)text);
443 uint16_t needlelen = strlen((
char *)needle);
450 for (i = 0; i < times; i++) {
458 static uint8_t *Bs2bmCtxWrapper(uint8_t *text, uint8_t *needle,
int times)
460 uint32_t textlen = strlen((
char *)text);
461 uint16_t needlelen = strlen((
char *)needle);
470 for (i = 0; i < times; i++) {
473 ret =
Bs2Bm(text, textlen, needle, needlelen, badchars);
479 static uint8_t *Bs2bmNocaseCtxWrapper(uint8_t *text, uint8_t *needle,
int times)
481 uint32_t textlen = strlen((
char *)text);
482 uint16_t needlelen = strlen((
char *)needle);
491 for (i = 0; i < times; i++) {
494 ret =
Bs2BmNocase(text, textlen, needle, needlelen, badchars);
500 static uint8_t *BoyerMooreCtxWrapper(uint8_t *text, uint8_t *needle,
int times)
502 uint32_t textlen = strlen((
char *)text);
503 uint16_t needlelen = strlen((
char *)needle);
512 for (i = 0; i < times; i++) {
514 ret =
BoyerMoore(needle, needlelen, text, textlen, bm_ctx);
522 static uint8_t *RawCtxWrapper(uint8_t *text, uint8_t *needle,
int times)
524 uint32_t textlen = strlen((
char *)text);
525 uint16_t needlelen = strlen((
char *)needle);
532 for (i = 0; i < times; i++) {
533 ret =
SpmSearch(text, textlen, needle, needlelen);
539 static uint8_t *BoyerMooreNocaseCtxWrapper(uint8_t *text, uint8_t *in_needle,
int times)
541 uint32_t textlen = strlen((
char *)text);
542 uint16_t needlelen = strlen((
char *)in_needle);
545 uint8_t *needle =
SCMalloc(needlelen);
548 memcpy(needle, in_needle, needlelen);
557 for (i = 0; i < times; i++) {
571 static int UtilSpmBasicSearchTest01(
void)
573 uint8_t *needle = (uint8_t *)
"oPqRsT";
574 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
575 uint8_t *found = BasicSearchWrapper(text, needle, 1);
584 static int UtilSpmBasicSearchNocaseTest01(
void)
586 uint8_t *needle = (uint8_t *)
"OpQrSt";
587 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
588 uint8_t *found = BasicSearchNocaseWrapper(text, needle, 1);
597 static int UtilSpmBs2bmSearchTest01(
void)
599 uint8_t *needle = (uint8_t *)
"oPqRsT";
600 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
601 uint8_t *found = Bs2bmWrapper(text, needle, 1);
610 static int UtilSpmBs2bmSearchNocaseTest01(
void)
612 uint8_t *needle = (uint8_t *)
"OpQrSt";
613 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
614 uint8_t *found = Bs2bmNocaseWrapper(text, needle, 1);
623 static int UtilSpmBoyerMooreSearchTest01(
void)
625 uint8_t *needle = (uint8_t *)
"oPqRsT";
626 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
627 uint8_t *found = BoyerMooreWrapper(text, needle, 1);
636 static int UtilSpmBoyerMooreSearchNocaseTest01(
void)
638 uint8_t *needle = (uint8_t *)
"OpQrSt";
639 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
640 uint8_t *found = BoyerMooreNocaseWrapper(text, needle, 1);
650 static int UtilSpmBoyerMooreSearchNocaseTestIssue130(
void)
652 uint8_t *needle = (uint8_t *)
"WWW-Authenticate: ";
653 uint8_t *text = (uint8_t *)
"Date: Mon, 23 Feb 2009 13:31:49 GMT"
655 "Www-authenticate: Basic realm=\"Authentification user password\"\r\n"
656 "Vary: accept-language,accept-charset\r\n"
657 "Accept-ranges: bytes\r\n"
658 "Connection: close\r\n"
659 "Content-type: text/html; charset=iso-8859-1\r\n"
660 "Content-language: fr\r\n"
661 "Expires: Mon, 23 Feb 2009 13:31:49 GMT\r\n\r\n";
662 uint8_t *found = BoyerMooreNocaseWrapper(text, needle, 1);
669 static int UtilSpmBasicSearchTest02(
void)
671 uint8_t *needle = (uint8_t *)
"oPQRsT";
672 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
673 uint8_t *found = BasicSearchWrapper(text, needle, 1);
679 static int UtilSpmBasicSearchNocaseTest02(
void)
681 uint8_t *needle = (uint8_t *)
"OpZrSt";
682 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
683 uint8_t *found = BasicSearchNocaseWrapper(text, needle, 1);
689 static int UtilSpmBs2bmSearchTest02(
void)
691 uint8_t *needle = (uint8_t *)
"oPQRsT";
692 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
693 uint8_t *found = Bs2bmWrapper(text, needle, 1);
699 static int UtilSpmBs2bmSearchNocaseTest02(
void)
701 uint8_t *needle = (uint8_t *)
"OpZrSt";
702 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
703 uint8_t *found = Bs2bmNocaseWrapper(text, needle, 1);
709 static int UtilSpmBoyerMooreSearchTest02(
void)
711 uint8_t *needle = (uint8_t *)
"oPQRsT";
712 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
713 uint8_t *found = BoyerMooreWrapper(text, needle, 1);
719 static int UtilSpmBoyerMooreSearchNocaseTest02(
void)
721 uint8_t *needle = (uint8_t *)
"OpZrSt";
722 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
723 uint8_t *found = BoyerMooreNocaseWrapper(text, needle, 1);
732 static int UtilSpmSearchOffsetsTest01(
void)
734 const char *text[26][27];
735 text[0][0]=
"azzzzzzzzzzzzzzzzzzzzzzzzzz";
736 text[0][1]=
"zazzzzzzzzzzzzzzzzzzzzzzzzz";
737 text[0][2]=
"zzazzzzzzzzzzzzzzzzzzzzzzzz";
738 text[0][3]=
"zzzazzzzzzzzzzzzzzzzzzzzzzz";
739 text[0][4]=
"zzzzazzzzzzzzzzzzzzzzzzzzzz";
740 text[0][5]=
"zzzzzazzzzzzzzzzzzzzzzzzzzz";
741 text[0][6]=
"zzzzzzazzzzzzzzzzzzzzzzzzzz";
742 text[0][7]=
"zzzzzzzazzzzzzzzzzzzzzzzzzz";
743 text[0][8]=
"zzzzzzzzazzzzzzzzzzzzzzzzzz";
744 text[0][9]=
"zzzzzzzzzazzzzzzzzzzzzzzzzz";
745 text[0][10]=
"zzzzzzzzzzazzzzzzzzzzzzzzzz";
746 text[0][11]=
"zzzzzzzzzzzazzzzzzzzzzzzzzz";
747 text[0][12]=
"zzzzzzzzzzzzazzzzzzzzzzzzzz";
748 text[0][13]=
"zzzzzzzzzzzzzazzzzzzzzzzzzz";
749 text[0][14]=
"zzzzzzzzzzzzzzazzzzzzzzzzzz";
750 text[0][15]=
"zzzzzzzzzzzzzzzazzzzzzzzzzz";
751 text[0][16]=
"zzzzzzzzzzzzzzzzazzzzzzzzzz";
752 text[0][17]=
"zzzzzzzzzzzzzzzzzazzzzzzzzz";
753 text[0][18]=
"zzzzzzzzzzzzzzzzzzazzzzzzzz";
754 text[0][19]=
"zzzzzzzzzzzzzzzzzzzazzzzzzz";
755 text[0][20]=
"zzzzzzzzzzzzzzzzzzzzazzzzzz";
756 text[0][21]=
"zzzzzzzzzzzzzzzzzzzzzazzzzz";
757 text[0][22]=
"zzzzzzzzzzzzzzzzzzzzzzazzzz";
758 text[0][23]=
"zzzzzzzzzzzzzzzzzzzzzzzazzz";
759 text[0][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzazz";
760 text[0][25]=
"zzzzzzzzzzzzzzzzzzzzzzzzzaz";
761 text[0][26]=
"zzzzzzzzzzzzzzzzzzzzzzzzzza";
762 text[1][0]=
"aBzzzzzzzzzzzzzzzzzzzzzzzzz";
763 text[1][1]=
"zaBzzzzzzzzzzzzzzzzzzzzzzzz";
764 text[1][2]=
"zzaBzzzzzzzzzzzzzzzzzzzzzzz";
765 text[1][3]=
"zzzaBzzzzzzzzzzzzzzzzzzzzzz";
766 text[1][4]=
"zzzzaBzzzzzzzzzzzzzzzzzzzzz";
767 text[1][5]=
"zzzzzaBzzzzzzzzzzzzzzzzzzzz";
768 text[1][6]=
"zzzzzzaBzzzzzzzzzzzzzzzzzzz";
769 text[1][7]=
"zzzzzzzaBzzzzzzzzzzzzzzzzzz";
770 text[1][8]=
"zzzzzzzzaBzzzzzzzzzzzzzzzzz";
771 text[1][9]=
"zzzzzzzzzaBzzzzzzzzzzzzzzzz";
772 text[1][10]=
"zzzzzzzzzzaBzzzzzzzzzzzzzzz";
773 text[1][11]=
"zzzzzzzzzzzaBzzzzzzzzzzzzzz";
774 text[1][12]=
"zzzzzzzzzzzzaBzzzzzzzzzzzzz";
775 text[1][13]=
"zzzzzzzzzzzzzaBzzzzzzzzzzzz";
776 text[1][14]=
"zzzzzzzzzzzzzzaBzzzzzzzzzzz";
777 text[1][15]=
"zzzzzzzzzzzzzzzaBzzzzzzzzzz";
778 text[1][16]=
"zzzzzzzzzzzzzzzzaBzzzzzzzzz";
779 text[1][17]=
"zzzzzzzzzzzzzzzzzaBzzzzzzzz";
780 text[1][18]=
"zzzzzzzzzzzzzzzzzzaBzzzzzzz";
781 text[1][19]=
"zzzzzzzzzzzzzzzzzzzaBzzzzzz";
782 text[1][20]=
"zzzzzzzzzzzzzzzzzzzzaBzzzzz";
783 text[1][21]=
"zzzzzzzzzzzzzzzzzzzzzaBzzzz";
784 text[1][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBzzz";
785 text[1][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBzz";
786 text[1][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzaBz";
787 text[1][25]=
"zzzzzzzzzzzzzzzzzzzzzzzzzaB";
788 text[2][0]=
"aBczzzzzzzzzzzzzzzzzzzzzzzz";
789 text[2][1]=
"zaBczzzzzzzzzzzzzzzzzzzzzzz";
790 text[2][2]=
"zzaBczzzzzzzzzzzzzzzzzzzzzz";
791 text[2][3]=
"zzzaBczzzzzzzzzzzzzzzzzzzzz";
792 text[2][4]=
"zzzzaBczzzzzzzzzzzzzzzzzzzz";
793 text[2][5]=
"zzzzzaBczzzzzzzzzzzzzzzzzzz";
794 text[2][6]=
"zzzzzzaBczzzzzzzzzzzzzzzzzz";
795 text[2][7]=
"zzzzzzzaBczzzzzzzzzzzzzzzzz";
796 text[2][8]=
"zzzzzzzzaBczzzzzzzzzzzzzzzz";
797 text[2][9]=
"zzzzzzzzzaBczzzzzzzzzzzzzzz";
798 text[2][10]=
"zzzzzzzzzzaBczzzzzzzzzzzzzz";
799 text[2][11]=
"zzzzzzzzzzzaBczzzzzzzzzzzzz";
800 text[2][12]=
"zzzzzzzzzzzzaBczzzzzzzzzzzz";
801 text[2][13]=
"zzzzzzzzzzzzzaBczzzzzzzzzzz";
802 text[2][14]=
"zzzzzzzzzzzzzzaBczzzzzzzzzz";
803 text[2][15]=
"zzzzzzzzzzzzzzzaBczzzzzzzzz";
804 text[2][16]=
"zzzzzzzzzzzzzzzzaBczzzzzzzz";
805 text[2][17]=
"zzzzzzzzzzzzzzzzzaBczzzzzzz";
806 text[2][18]=
"zzzzzzzzzzzzzzzzzzaBczzzzzz";
807 text[2][19]=
"zzzzzzzzzzzzzzzzzzzaBczzzzz";
808 text[2][20]=
"zzzzzzzzzzzzzzzzzzzzaBczzzz";
809 text[2][21]=
"zzzzzzzzzzzzzzzzzzzzzaBczzz";
810 text[2][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBczz";
811 text[2][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBcz";
812 text[2][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzaBc";
813 text[3][0]=
"aBcDzzzzzzzzzzzzzzzzzzzzzzz";
814 text[3][1]=
"zaBcDzzzzzzzzzzzzzzzzzzzzzz";
815 text[3][2]=
"zzaBcDzzzzzzzzzzzzzzzzzzzzz";
816 text[3][3]=
"zzzaBcDzzzzzzzzzzzzzzzzzzzz";
817 text[3][4]=
"zzzzaBcDzzzzzzzzzzzzzzzzzzz";
818 text[3][5]=
"zzzzzaBcDzzzzzzzzzzzzzzzzzz";
819 text[3][6]=
"zzzzzzaBcDzzzzzzzzzzzzzzzzz";
820 text[3][7]=
"zzzzzzzaBcDzzzzzzzzzzzzzzzz";
821 text[3][8]=
"zzzzzzzzaBcDzzzzzzzzzzzzzzz";
822 text[3][9]=
"zzzzzzzzzaBcDzzzzzzzzzzzzzz";
823 text[3][10]=
"zzzzzzzzzzaBcDzzzzzzzzzzzzz";
824 text[3][11]=
"zzzzzzzzzzzaBcDzzzzzzzzzzzz";
825 text[3][12]=
"zzzzzzzzzzzzaBcDzzzzzzzzzzz";
826 text[3][13]=
"zzzzzzzzzzzzzaBcDzzzzzzzzzz";
827 text[3][14]=
"zzzzzzzzzzzzzzaBcDzzzzzzzzz";
828 text[3][15]=
"zzzzzzzzzzzzzzzaBcDzzzzzzzz";
829 text[3][16]=
"zzzzzzzzzzzzzzzzaBcDzzzzzzz";
830 text[3][17]=
"zzzzzzzzzzzzzzzzzaBcDzzzzzz";
831 text[3][18]=
"zzzzzzzzzzzzzzzzzzaBcDzzzzz";
832 text[3][19]=
"zzzzzzzzzzzzzzzzzzzaBcDzzzz";
833 text[3][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDzzz";
834 text[3][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDzz";
835 text[3][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBcDz";
836 text[3][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBcD";
837 text[4][0]=
"aBcDezzzzzzzzzzzzzzzzzzzzzz";
838 text[4][1]=
"zaBcDezzzzzzzzzzzzzzzzzzzzz";
839 text[4][2]=
"zzaBcDezzzzzzzzzzzzzzzzzzzz";
840 text[4][3]=
"zzzaBcDezzzzzzzzzzzzzzzzzzz";
841 text[4][4]=
"zzzzaBcDezzzzzzzzzzzzzzzzzz";
842 text[4][5]=
"zzzzzaBcDezzzzzzzzzzzzzzzzz";
843 text[4][6]=
"zzzzzzaBcDezzzzzzzzzzzzzzzz";
844 text[4][7]=
"zzzzzzzaBcDezzzzzzzzzzzzzzz";
845 text[4][8]=
"zzzzzzzzaBcDezzzzzzzzzzzzzz";
846 text[4][9]=
"zzzzzzzzzaBcDezzzzzzzzzzzzz";
847 text[4][10]=
"zzzzzzzzzzaBcDezzzzzzzzzzzz";
848 text[4][11]=
"zzzzzzzzzzzaBcDezzzzzzzzzzz";
849 text[4][12]=
"zzzzzzzzzzzzaBcDezzzzzzzzzz";
850 text[4][13]=
"zzzzzzzzzzzzzaBcDezzzzzzzzz";
851 text[4][14]=
"zzzzzzzzzzzzzzaBcDezzzzzzzz";
852 text[4][15]=
"zzzzzzzzzzzzzzzaBcDezzzzzzz";
853 text[4][16]=
"zzzzzzzzzzzzzzzzaBcDezzzzzz";
854 text[4][17]=
"zzzzzzzzzzzzzzzzzaBcDezzzzz";
855 text[4][18]=
"zzzzzzzzzzzzzzzzzzaBcDezzzz";
856 text[4][19]=
"zzzzzzzzzzzzzzzzzzzaBcDezzz";
857 text[4][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDezz";
858 text[4][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDez";
859 text[4][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBcDe";
860 text[5][0]=
"aBcDeFzzzzzzzzzzzzzzzzzzzzz";
861 text[5][1]=
"zaBcDeFzzzzzzzzzzzzzzzzzzzz";
862 text[5][2]=
"zzaBcDeFzzzzzzzzzzzzzzzzzzz";
863 text[5][3]=
"zzzaBcDeFzzzzzzzzzzzzzzzzzz";
864 text[5][4]=
"zzzzaBcDeFzzzzzzzzzzzzzzzzz";
865 text[5][5]=
"zzzzzaBcDeFzzzzzzzzzzzzzzzz";
866 text[5][6]=
"zzzzzzaBcDeFzzzzzzzzzzzzzzz";
867 text[5][7]=
"zzzzzzzaBcDeFzzzzzzzzzzzzzz";
868 text[5][8]=
"zzzzzzzzaBcDeFzzzzzzzzzzzzz";
869 text[5][9]=
"zzzzzzzzzaBcDeFzzzzzzzzzzzz";
870 text[5][10]=
"zzzzzzzzzzaBcDeFzzzzzzzzzzz";
871 text[5][11]=
"zzzzzzzzzzzaBcDeFzzzzzzzzzz";
872 text[5][12]=
"zzzzzzzzzzzzaBcDeFzzzzzzzzz";
873 text[5][13]=
"zzzzzzzzzzzzzaBcDeFzzzzzzzz";
874 text[5][14]=
"zzzzzzzzzzzzzzaBcDeFzzzzzzz";
875 text[5][15]=
"zzzzzzzzzzzzzzzaBcDeFzzzzzz";
876 text[5][16]=
"zzzzzzzzzzzzzzzzaBcDeFzzzzz";
877 text[5][17]=
"zzzzzzzzzzzzzzzzzaBcDeFzzzz";
878 text[5][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFzzz";
879 text[5][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFzz";
880 text[5][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFz";
881 text[5][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDeF";
882 text[6][0]=
"aBcDeFgzzzzzzzzzzzzzzzzzzzz";
883 text[6][1]=
"zaBcDeFgzzzzzzzzzzzzzzzzzzz";
884 text[6][2]=
"zzaBcDeFgzzzzzzzzzzzzzzzzzz";
885 text[6][3]=
"zzzaBcDeFgzzzzzzzzzzzzzzzzz";
886 text[6][4]=
"zzzzaBcDeFgzzzzzzzzzzzzzzzz";
887 text[6][5]=
"zzzzzaBcDeFgzzzzzzzzzzzzzzz";
888 text[6][6]=
"zzzzzzaBcDeFgzzzzzzzzzzzzzz";
889 text[6][7]=
"zzzzzzzaBcDeFgzzzzzzzzzzzzz";
890 text[6][8]=
"zzzzzzzzaBcDeFgzzzzzzzzzzzz";
891 text[6][9]=
"zzzzzzzzzaBcDeFgzzzzzzzzzzz";
892 text[6][10]=
"zzzzzzzzzzaBcDeFgzzzzzzzzzz";
893 text[6][11]=
"zzzzzzzzzzzaBcDeFgzzzzzzzzz";
894 text[6][12]=
"zzzzzzzzzzzzaBcDeFgzzzzzzzz";
895 text[6][13]=
"zzzzzzzzzzzzzaBcDeFgzzzzzzz";
896 text[6][14]=
"zzzzzzzzzzzzzzaBcDeFgzzzzzz";
897 text[6][15]=
"zzzzzzzzzzzzzzzaBcDeFgzzzzz";
898 text[6][16]=
"zzzzzzzzzzzzzzzzaBcDeFgzzzz";
899 text[6][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgzzz";
900 text[6][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgzz";
901 text[6][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFgz";
902 text[6][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
903 text[7][0]=
"aBcDeFgHzzzzzzzzzzzzzzzzzzz";
904 text[7][1]=
"zaBcDeFgHzzzzzzzzzzzzzzzzzz";
905 text[7][2]=
"zzaBcDeFgHzzzzzzzzzzzzzzzzz";
906 text[7][3]=
"zzzaBcDeFgHzzzzzzzzzzzzzzzz";
907 text[7][4]=
"zzzzaBcDeFgHzzzzzzzzzzzzzzz";
908 text[7][5]=
"zzzzzaBcDeFgHzzzzzzzzzzzzzz";
909 text[7][6]=
"zzzzzzaBcDeFgHzzzzzzzzzzzzz";
910 text[7][7]=
"zzzzzzzaBcDeFgHzzzzzzzzzzzz";
911 text[7][8]=
"zzzzzzzzaBcDeFgHzzzzzzzzzzz";
912 text[7][9]=
"zzzzzzzzzaBcDeFgHzzzzzzzzzz";
913 text[7][10]=
"zzzzzzzzzzaBcDeFgHzzzzzzzzz";
914 text[7][11]=
"zzzzzzzzzzzaBcDeFgHzzzzzzzz";
915 text[7][12]=
"zzzzzzzzzzzzaBcDeFgHzzzzzzz";
916 text[7][13]=
"zzzzzzzzzzzzzaBcDeFgHzzzzzz";
917 text[7][14]=
"zzzzzzzzzzzzzzaBcDeFgHzzzzz";
918 text[7][15]=
"zzzzzzzzzzzzzzzaBcDeFgHzzzz";
919 text[7][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHzzz";
920 text[7][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHzz";
921 text[7][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgHz";
922 text[7][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFgH";
923 text[8][0]=
"aBcDeFgHizzzzzzzzzzzzzzzzzz";
924 text[8][1]=
"zaBcDeFgHizzzzzzzzzzzzzzzzz";
925 text[8][2]=
"zzaBcDeFgHizzzzzzzzzzzzzzzz";
926 text[8][3]=
"zzzaBcDeFgHizzzzzzzzzzzzzzz";
927 text[8][4]=
"zzzzaBcDeFgHizzzzzzzzzzzzzz";
928 text[8][5]=
"zzzzzaBcDeFgHizzzzzzzzzzzzz";
929 text[8][6]=
"zzzzzzaBcDeFgHizzzzzzzzzzzz";
930 text[8][7]=
"zzzzzzzaBcDeFgHizzzzzzzzzzz";
931 text[8][8]=
"zzzzzzzzaBcDeFgHizzzzzzzzzz";
932 text[8][9]=
"zzzzzzzzzaBcDeFgHizzzzzzzzz";
933 text[8][10]=
"zzzzzzzzzzaBcDeFgHizzzzzzzz";
934 text[8][11]=
"zzzzzzzzzzzaBcDeFgHizzzzzzz";
935 text[8][12]=
"zzzzzzzzzzzzaBcDeFgHizzzzzz";
936 text[8][13]=
"zzzzzzzzzzzzzaBcDeFgHizzzzz";
937 text[8][14]=
"zzzzzzzzzzzzzzaBcDeFgHizzzz";
938 text[8][15]=
"zzzzzzzzzzzzzzzaBcDeFgHizzz";
939 text[8][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHizz";
940 text[8][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHiz";
941 text[8][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgHi";
942 text[9][0]=
"aBcDeFgHiJzzzzzzzzzzzzzzzzz";
943 text[9][1]=
"zaBcDeFgHiJzzzzzzzzzzzzzzzz";
944 text[9][2]=
"zzaBcDeFgHiJzzzzzzzzzzzzzzz";
945 text[9][3]=
"zzzaBcDeFgHiJzzzzzzzzzzzzzz";
946 text[9][4]=
"zzzzaBcDeFgHiJzzzzzzzzzzzzz";
947 text[9][5]=
"zzzzzaBcDeFgHiJzzzzzzzzzzzz";
948 text[9][6]=
"zzzzzzaBcDeFgHiJzzzzzzzzzzz";
949 text[9][7]=
"zzzzzzzaBcDeFgHiJzzzzzzzzzz";
950 text[9][8]=
"zzzzzzzzaBcDeFgHiJzzzzzzzzz";
951 text[9][9]=
"zzzzzzzzzaBcDeFgHiJzzzzzzzz";
952 text[9][10]=
"zzzzzzzzzzaBcDeFgHiJzzzzzzz";
953 text[9][11]=
"zzzzzzzzzzzaBcDeFgHiJzzzzzz";
954 text[9][12]=
"zzzzzzzzzzzzaBcDeFgHiJzzzzz";
955 text[9][13]=
"zzzzzzzzzzzzzaBcDeFgHiJzzzz";
956 text[9][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJzzz";
957 text[9][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJzz";
958 text[9][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHiJz";
959 text[9][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHiJ";
960 text[10][0]=
"aBcDeFgHiJkzzzzzzzzzzzzzzzz";
961 text[10][1]=
"zaBcDeFgHiJkzzzzzzzzzzzzzzz";
962 text[10][2]=
"zzaBcDeFgHiJkzzzzzzzzzzzzzz";
963 text[10][3]=
"zzzaBcDeFgHiJkzzzzzzzzzzzzz";
964 text[10][4]=
"zzzzaBcDeFgHiJkzzzzzzzzzzzz";
965 text[10][5]=
"zzzzzaBcDeFgHiJkzzzzzzzzzzz";
966 text[10][6]=
"zzzzzzaBcDeFgHiJkzzzzzzzzzz";
967 text[10][7]=
"zzzzzzzaBcDeFgHiJkzzzzzzzzz";
968 text[10][8]=
"zzzzzzzzaBcDeFgHiJkzzzzzzzz";
969 text[10][9]=
"zzzzzzzzzaBcDeFgHiJkzzzzzzz";
970 text[10][10]=
"zzzzzzzzzzaBcDeFgHiJkzzzzzz";
971 text[10][11]=
"zzzzzzzzzzzaBcDeFgHiJkzzzzz";
972 text[10][12]=
"zzzzzzzzzzzzaBcDeFgHiJkzzzz";
973 text[10][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkzzz";
974 text[10][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkzz";
975 text[10][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJkz";
976 text[10][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHiJk";
977 text[11][0]=
"aBcDeFgHiJkLzzzzzzzzzzzzzzz";
978 text[11][1]=
"zaBcDeFgHiJkLzzzzzzzzzzzzzz";
979 text[11][2]=
"zzaBcDeFgHiJkLzzzzzzzzzzzzz";
980 text[11][3]=
"zzzaBcDeFgHiJkLzzzzzzzzzzzz";
981 text[11][4]=
"zzzzaBcDeFgHiJkLzzzzzzzzzzz";
982 text[11][5]=
"zzzzzaBcDeFgHiJkLzzzzzzzzzz";
983 text[11][6]=
"zzzzzzaBcDeFgHiJkLzzzzzzzzz";
984 text[11][7]=
"zzzzzzzaBcDeFgHiJkLzzzzzzzz";
985 text[11][8]=
"zzzzzzzzaBcDeFgHiJkLzzzzzzz";
986 text[11][9]=
"zzzzzzzzzaBcDeFgHiJkLzzzzzz";
987 text[11][10]=
"zzzzzzzzzzaBcDeFgHiJkLzzzzz";
988 text[11][11]=
"zzzzzzzzzzzaBcDeFgHiJkLzzzz";
989 text[11][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLzzz";
990 text[11][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLzz";
991 text[11][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkLz";
992 text[11][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJkL";
993 text[12][0]=
"aBcDeFgHiJkLmzzzzzzzzzzzzzz";
994 text[12][1]=
"zaBcDeFgHiJkLmzzzzzzzzzzzzz";
995 text[12][2]=
"zzaBcDeFgHiJkLmzzzzzzzzzzzz";
996 text[12][3]=
"zzzaBcDeFgHiJkLmzzzzzzzzzzz";
997 text[12][4]=
"zzzzaBcDeFgHiJkLmzzzzzzzzzz";
998 text[12][5]=
"zzzzzaBcDeFgHiJkLmzzzzzzzzz";
999 text[12][6]=
"zzzzzzaBcDeFgHiJkLmzzzzzzzz";
1000 text[12][7]=
"zzzzzzzaBcDeFgHiJkLmzzzzzzz";
1001 text[12][8]=
"zzzzzzzzaBcDeFgHiJkLmzzzzzz";
1002 text[12][9]=
"zzzzzzzzzaBcDeFgHiJkLmzzzzz";
1003 text[12][10]=
"zzzzzzzzzzaBcDeFgHiJkLmzzzz";
1004 text[12][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmzzz";
1005 text[12][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmzz";
1006 text[12][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLmz";
1007 text[12][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkLm";
1008 text[13][0]=
"aBcDeFgHiJkLmNzzzzzzzzzzzzz";
1009 text[13][1]=
"zaBcDeFgHiJkLmNzzzzzzzzzzzz";
1010 text[13][2]=
"zzaBcDeFgHiJkLmNzzzzzzzzzzz";
1011 text[13][3]=
"zzzaBcDeFgHiJkLmNzzzzzzzzzz";
1012 text[13][4]=
"zzzzaBcDeFgHiJkLmNzzzzzzzzz";
1013 text[13][5]=
"zzzzzaBcDeFgHiJkLmNzzzzzzzz";
1014 text[13][6]=
"zzzzzzaBcDeFgHiJkLmNzzzzzzz";
1015 text[13][7]=
"zzzzzzzaBcDeFgHiJkLmNzzzzzz";
1016 text[13][8]=
"zzzzzzzzaBcDeFgHiJkLmNzzzzz";
1017 text[13][9]=
"zzzzzzzzzaBcDeFgHiJkLmNzzzz";
1018 text[13][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNzzz";
1019 text[13][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNzz";
1020 text[13][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmNz";
1021 text[13][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLmN";
1022 text[14][0]=
"aBcDeFgHiJkLmNozzzzzzzzzzzz";
1023 text[14][1]=
"zaBcDeFgHiJkLmNozzzzzzzzzzz";
1024 text[14][2]=
"zzaBcDeFgHiJkLmNozzzzzzzzzz";
1025 text[14][3]=
"zzzaBcDeFgHiJkLmNozzzzzzzzz";
1026 text[14][4]=
"zzzzaBcDeFgHiJkLmNozzzzzzzz";
1027 text[14][5]=
"zzzzzaBcDeFgHiJkLmNozzzzzzz";
1028 text[14][6]=
"zzzzzzaBcDeFgHiJkLmNozzzzzz";
1029 text[14][7]=
"zzzzzzzaBcDeFgHiJkLmNozzzzz";
1030 text[14][8]=
"zzzzzzzzaBcDeFgHiJkLmNozzzz";
1031 text[14][9]=
"zzzzzzzzzaBcDeFgHiJkLmNozzz";
1032 text[14][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNozz";
1033 text[14][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNoz";
1034 text[14][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmNo";
1035 text[15][0]=
"aBcDeFgHiJkLmNoPzzzzzzzzzzz";
1036 text[15][1]=
"zaBcDeFgHiJkLmNoPzzzzzzzzzz";
1037 text[15][2]=
"zzaBcDeFgHiJkLmNoPzzzzzzzzz";
1038 text[15][3]=
"zzzaBcDeFgHiJkLmNoPzzzzzzzz";
1039 text[15][4]=
"zzzzaBcDeFgHiJkLmNoPzzzzzzz";
1040 text[15][5]=
"zzzzzaBcDeFgHiJkLmNoPzzzzzz";
1041 text[15][6]=
"zzzzzzaBcDeFgHiJkLmNoPzzzzz";
1042 text[15][7]=
"zzzzzzzaBcDeFgHiJkLmNoPzzzz";
1043 text[15][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPzzz";
1044 text[15][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPzz";
1045 text[15][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNoPz";
1046 text[15][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNoP";
1047 text[16][0]=
"aBcDeFgHiJkLmNoPqzzzzzzzzzz";
1048 text[16][1]=
"zaBcDeFgHiJkLmNoPqzzzzzzzzz";
1049 text[16][2]=
"zzaBcDeFgHiJkLmNoPqzzzzzzzz";
1050 text[16][3]=
"zzzaBcDeFgHiJkLmNoPqzzzzzzz";
1051 text[16][4]=
"zzzzaBcDeFgHiJkLmNoPqzzzzzz";
1052 text[16][5]=
"zzzzzaBcDeFgHiJkLmNoPqzzzzz";
1053 text[16][6]=
"zzzzzzaBcDeFgHiJkLmNoPqzzzz";
1054 text[16][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqzzz";
1055 text[16][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqzz";
1056 text[16][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPqz";
1057 text[16][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNoPq";
1058 text[17][0]=
"aBcDeFgHiJkLmNoPqRzzzzzzzzz";
1059 text[17][1]=
"zaBcDeFgHiJkLmNoPqRzzzzzzzz";
1060 text[17][2]=
"zzaBcDeFgHiJkLmNoPqRzzzzzzz";
1061 text[17][3]=
"zzzaBcDeFgHiJkLmNoPqRzzzzzz";
1062 text[17][4]=
"zzzzaBcDeFgHiJkLmNoPqRzzzzz";
1063 text[17][5]=
"zzzzzaBcDeFgHiJkLmNoPqRzzzz";
1064 text[17][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRzzz";
1065 text[17][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRzz";
1066 text[17][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqRz";
1067 text[17][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPqR";
1068 text[18][0]=
"aBcDeFgHiJkLmNoPqRszzzzzzzz";
1069 text[18][1]=
"zaBcDeFgHiJkLmNoPqRszzzzzzz";
1070 text[18][2]=
"zzaBcDeFgHiJkLmNoPqRszzzzzz";
1071 text[18][3]=
"zzzaBcDeFgHiJkLmNoPqRszzzzz";
1072 text[18][4]=
"zzzzaBcDeFgHiJkLmNoPqRszzzz";
1073 text[18][5]=
"zzzzzaBcDeFgHiJkLmNoPqRszzz";
1074 text[18][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRszz";
1075 text[18][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRsz";
1076 text[18][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqRs";
1077 text[19][0]=
"aBcDeFgHiJkLmNoPqRsTzzzzzzz";
1078 text[19][1]=
"zaBcDeFgHiJkLmNoPqRsTzzzzzz";
1079 text[19][2]=
"zzaBcDeFgHiJkLmNoPqRsTzzzzz";
1080 text[19][3]=
"zzzaBcDeFgHiJkLmNoPqRsTzzzz";
1081 text[19][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTzzz";
1082 text[19][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTzz";
1083 text[19][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRsTz";
1084 text[19][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRsT";
1085 text[20][0]=
"aBcDeFgHiJkLmNoPqRsTuzzzzzz";
1086 text[20][1]=
"zaBcDeFgHiJkLmNoPqRsTuzzzzz";
1087 text[20][2]=
"zzaBcDeFgHiJkLmNoPqRsTuzzzz";
1088 text[20][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuzzz";
1089 text[20][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuzz";
1090 text[20][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTuz";
1091 text[20][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRsTu";
1092 text[21][0]=
"aBcDeFgHiJkLmNoPqRsTuVzzzzz";
1093 text[21][1]=
"zaBcDeFgHiJkLmNoPqRsTuVzzzz";
1094 text[21][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVzzz";
1095 text[21][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVzz";
1096 text[21][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuVz";
1097 text[21][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTuV";
1098 text[22][0]=
"aBcDeFgHiJkLmNoPqRsTuVwzzzz";
1099 text[22][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwzzz";
1100 text[22][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwzz";
1101 text[22][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVwz";
1102 text[22][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuVw";
1103 text[23][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXzzz";
1104 text[23][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXzz";
1105 text[23][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwXz";
1106 text[23][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVwX";
1107 text[24][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXyzz";
1108 text[24][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXyz";
1109 text[24][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwXy";
1110 text[25][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXyZz";
1111 text[25][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXyZ";
1113 const char *needle[26];
1120 needle[6]=
"aBcDeFg";
1121 needle[7]=
"aBcDeFgH";
1122 needle[8]=
"aBcDeFgHi";
1123 needle[9]=
"aBcDeFgHiJ";
1124 needle[10]=
"aBcDeFgHiJk";
1125 needle[11]=
"aBcDeFgHiJkL";
1126 needle[12]=
"aBcDeFgHiJkLm";
1127 needle[13]=
"aBcDeFgHiJkLmN";
1128 needle[14]=
"aBcDeFgHiJkLmNo";
1129 needle[15]=
"aBcDeFgHiJkLmNoP";
1130 needle[16]=
"aBcDeFgHiJkLmNoPq";
1131 needle[17]=
"aBcDeFgHiJkLmNoPqR";
1132 needle[18]=
"aBcDeFgHiJkLmNoPqRs";
1133 needle[19]=
"aBcDeFgHiJkLmNoPqRsT";
1134 needle[20]=
"aBcDeFgHiJkLmNoPqRsTu";
1135 needle[21]=
"aBcDeFgHiJkLmNoPqRsTuV";
1136 needle[22]=
"aBcDeFgHiJkLmNoPqRsTuVw";
1137 needle[23]=
"aBcDeFgHiJkLmNoPqRsTuVwX";
1138 needle[24]=
"aBcDeFgHiJkLmNoPqRsTuVwXy";
1139 needle[25]=
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
1142 uint8_t *found = NULL;
1143 for (i = 0; i < 26; i++) {
1144 for (j = 0; j <= (26 - i); j++) {
1145 found = BasicSearchWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1147 found = Bs2bmWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1149 found = BoyerMooreWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1159 static int UtilSpmSearchOffsetsNocaseTest01(
void)
1161 const char *text[26][27];
1162 text[0][0]=
"azzzzzzzzzzzzzzzzzzzzzzzzzz";
1163 text[0][1]=
"zazzzzzzzzzzzzzzzzzzzzzzzzz";
1164 text[0][2]=
"zzazzzzzzzzzzzzzzzzzzzzzzzz";
1165 text[0][3]=
"zzzazzzzzzzzzzzzzzzzzzzzzzz";
1166 text[0][4]=
"zzzzazzzzzzzzzzzzzzzzzzzzzz";
1167 text[0][5]=
"zzzzzazzzzzzzzzzzzzzzzzzzzz";
1168 text[0][6]=
"zzzzzzazzzzzzzzzzzzzzzzzzzz";
1169 text[0][7]=
"zzzzzzzazzzzzzzzzzzzzzzzzzz";
1170 text[0][8]=
"zzzzzzzzazzzzzzzzzzzzzzzzzz";
1171 text[0][9]=
"zzzzzzzzzazzzzzzzzzzzzzzzzz";
1172 text[0][10]=
"zzzzzzzzzzazzzzzzzzzzzzzzzz";
1173 text[0][11]=
"zzzzzzzzzzzazzzzzzzzzzzzzzz";
1174 text[0][12]=
"zzzzzzzzzzzzazzzzzzzzzzzzzz";
1175 text[0][13]=
"zzzzzzzzzzzzzazzzzzzzzzzzzz";
1176 text[0][14]=
"zzzzzzzzzzzzzzazzzzzzzzzzzz";
1177 text[0][15]=
"zzzzzzzzzzzzzzzazzzzzzzzzzz";
1178 text[0][16]=
"zzzzzzzzzzzzzzzzazzzzzzzzzz";
1179 text[0][17]=
"zzzzzzzzzzzzzzzzzazzzzzzzzz";
1180 text[0][18]=
"zzzzzzzzzzzzzzzzzzazzzzzzzz";
1181 text[0][19]=
"zzzzzzzzzzzzzzzzzzzazzzzzzz";
1182 text[0][20]=
"zzzzzzzzzzzzzzzzzzzzazzzzzz";
1183 text[0][21]=
"zzzzzzzzzzzzzzzzzzzzzazzzzz";
1184 text[0][22]=
"zzzzzzzzzzzzzzzzzzzzzzazzzz";
1185 text[0][23]=
"zzzzzzzzzzzzzzzzzzzzzzzazzz";
1186 text[0][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzazz";
1187 text[0][25]=
"zzzzzzzzzzzzzzzzzzzzzzzzzaz";
1188 text[0][26]=
"zzzzzzzzzzzzzzzzzzzzzzzzzza";
1189 text[1][0]=
"aBzzzzzzzzzzzzzzzzzzzzzzzzz";
1190 text[1][1]=
"zaBzzzzzzzzzzzzzzzzzzzzzzzz";
1191 text[1][2]=
"zzaBzzzzzzzzzzzzzzzzzzzzzzz";
1192 text[1][3]=
"zzzaBzzzzzzzzzzzzzzzzzzzzzz";
1193 text[1][4]=
"zzzzaBzzzzzzzzzzzzzzzzzzzzz";
1194 text[1][5]=
"zzzzzaBzzzzzzzzzzzzzzzzzzzz";
1195 text[1][6]=
"zzzzzzaBzzzzzzzzzzzzzzzzzzz";
1196 text[1][7]=
"zzzzzzzaBzzzzzzzzzzzzzzzzzz";
1197 text[1][8]=
"zzzzzzzzaBzzzzzzzzzzzzzzzzz";
1198 text[1][9]=
"zzzzzzzzzaBzzzzzzzzzzzzzzzz";
1199 text[1][10]=
"zzzzzzzzzzaBzzzzzzzzzzzzzzz";
1200 text[1][11]=
"zzzzzzzzzzzaBzzzzzzzzzzzzzz";
1201 text[1][12]=
"zzzzzzzzzzzzaBzzzzzzzzzzzzz";
1202 text[1][13]=
"zzzzzzzzzzzzzaBzzzzzzzzzzzz";
1203 text[1][14]=
"zzzzzzzzzzzzzzaBzzzzzzzzzzz";
1204 text[1][15]=
"zzzzzzzzzzzzzzzaBzzzzzzzzzz";
1205 text[1][16]=
"zzzzzzzzzzzzzzzzaBzzzzzzzzz";
1206 text[1][17]=
"zzzzzzzzzzzzzzzzzaBzzzzzzzz";
1207 text[1][18]=
"zzzzzzzzzzzzzzzzzzaBzzzzzzz";
1208 text[1][19]=
"zzzzzzzzzzzzzzzzzzzaBzzzzzz";
1209 text[1][20]=
"zzzzzzzzzzzzzzzzzzzzaBzzzzz";
1210 text[1][21]=
"zzzzzzzzzzzzzzzzzzzzzaBzzzz";
1211 text[1][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBzzz";
1212 text[1][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBzz";
1213 text[1][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzaBz";
1214 text[1][25]=
"zzzzzzzzzzzzzzzzzzzzzzzzzaB";
1215 text[2][0]=
"aBczzzzzzzzzzzzzzzzzzzzzzzz";
1216 text[2][1]=
"zaBczzzzzzzzzzzzzzzzzzzzzzz";
1217 text[2][2]=
"zzaBczzzzzzzzzzzzzzzzzzzzzz";
1218 text[2][3]=
"zzzaBczzzzzzzzzzzzzzzzzzzzz";
1219 text[2][4]=
"zzzzaBczzzzzzzzzzzzzzzzzzzz";
1220 text[2][5]=
"zzzzzaBczzzzzzzzzzzzzzzzzzz";
1221 text[2][6]=
"zzzzzzaBczzzzzzzzzzzzzzzzzz";
1222 text[2][7]=
"zzzzzzzaBczzzzzzzzzzzzzzzzz";
1223 text[2][8]=
"zzzzzzzzaBczzzzzzzzzzzzzzzz";
1224 text[2][9]=
"zzzzzzzzzaBczzzzzzzzzzzzzzz";
1225 text[2][10]=
"zzzzzzzzzzaBczzzzzzzzzzzzzz";
1226 text[2][11]=
"zzzzzzzzzzzaBczzzzzzzzzzzzz";
1227 text[2][12]=
"zzzzzzzzzzzzaBczzzzzzzzzzzz";
1228 text[2][13]=
"zzzzzzzzzzzzzaBczzzzzzzzzzz";
1229 text[2][14]=
"zzzzzzzzzzzzzzaBczzzzzzzzzz";
1230 text[2][15]=
"zzzzzzzzzzzzzzzaBczzzzzzzzz";
1231 text[2][16]=
"zzzzzzzzzzzzzzzzaBczzzzzzzz";
1232 text[2][17]=
"zzzzzzzzzzzzzzzzzaBczzzzzzz";
1233 text[2][18]=
"zzzzzzzzzzzzzzzzzzaBczzzzzz";
1234 text[2][19]=
"zzzzzzzzzzzzzzzzzzzaBczzzzz";
1235 text[2][20]=
"zzzzzzzzzzzzzzzzzzzzaBczzzz";
1236 text[2][21]=
"zzzzzzzzzzzzzzzzzzzzzaBczzz";
1237 text[2][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBczz";
1238 text[2][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBcz";
1239 text[2][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzaBc";
1240 text[3][0]=
"aBcDzzzzzzzzzzzzzzzzzzzzzzz";
1241 text[3][1]=
"zaBcDzzzzzzzzzzzzzzzzzzzzzz";
1242 text[3][2]=
"zzaBcDzzzzzzzzzzzzzzzzzzzzz";
1243 text[3][3]=
"zzzaBcDzzzzzzzzzzzzzzzzzzzz";
1244 text[3][4]=
"zzzzaBcDzzzzzzzzzzzzzzzzzzz";
1245 text[3][5]=
"zzzzzaBcDzzzzzzzzzzzzzzzzzz";
1246 text[3][6]=
"zzzzzzaBcDzzzzzzzzzzzzzzzzz";
1247 text[3][7]=
"zzzzzzzaBcDzzzzzzzzzzzzzzzz";
1248 text[3][8]=
"zzzzzzzzaBcDzzzzzzzzzzzzzzz";
1249 text[3][9]=
"zzzzzzzzzaBcDzzzzzzzzzzzzzz";
1250 text[3][10]=
"zzzzzzzzzzaBcDzzzzzzzzzzzzz";
1251 text[3][11]=
"zzzzzzzzzzzaBcDzzzzzzzzzzzz";
1252 text[3][12]=
"zzzzzzzzzzzzaBcDzzzzzzzzzzz";
1253 text[3][13]=
"zzzzzzzzzzzzzaBcDzzzzzzzzzz";
1254 text[3][14]=
"zzzzzzzzzzzzzzaBcDzzzzzzzzz";
1255 text[3][15]=
"zzzzzzzzzzzzzzzaBcDzzzzzzzz";
1256 text[3][16]=
"zzzzzzzzzzzzzzzzaBcDzzzzzzz";
1257 text[3][17]=
"zzzzzzzzzzzzzzzzzaBcDzzzzzz";
1258 text[3][18]=
"zzzzzzzzzzzzzzzzzzaBcDzzzzz";
1259 text[3][19]=
"zzzzzzzzzzzzzzzzzzzaBcDzzzz";
1260 text[3][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDzzz";
1261 text[3][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDzz";
1262 text[3][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBcDz";
1263 text[3][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBcD";
1264 text[4][0]=
"aBcDezzzzzzzzzzzzzzzzzzzzzz";
1265 text[4][1]=
"zaBcDezzzzzzzzzzzzzzzzzzzzz";
1266 text[4][2]=
"zzaBcDezzzzzzzzzzzzzzzzzzzz";
1267 text[4][3]=
"zzzaBcDezzzzzzzzzzzzzzzzzzz";
1268 text[4][4]=
"zzzzaBcDezzzzzzzzzzzzzzzzzz";
1269 text[4][5]=
"zzzzzaBcDezzzzzzzzzzzzzzzzz";
1270 text[4][6]=
"zzzzzzaBcDezzzzzzzzzzzzzzzz";
1271 text[4][7]=
"zzzzzzzaBcDezzzzzzzzzzzzzzz";
1272 text[4][8]=
"zzzzzzzzaBcDezzzzzzzzzzzzzz";
1273 text[4][9]=
"zzzzzzzzzaBcDezzzzzzzzzzzzz";
1274 text[4][10]=
"zzzzzzzzzzaBcDezzzzzzzzzzzz";
1275 text[4][11]=
"zzzzzzzzzzzaBcDezzzzzzzzzzz";
1276 text[4][12]=
"zzzzzzzzzzzzaBcDezzzzzzzzzz";
1277 text[4][13]=
"zzzzzzzzzzzzzaBcDezzzzzzzzz";
1278 text[4][14]=
"zzzzzzzzzzzzzzaBcDezzzzzzzz";
1279 text[4][15]=
"zzzzzzzzzzzzzzzaBcDezzzzzzz";
1280 text[4][16]=
"zzzzzzzzzzzzzzzzaBcDezzzzzz";
1281 text[4][17]=
"zzzzzzzzzzzzzzzzzaBcDezzzzz";
1282 text[4][18]=
"zzzzzzzzzzzzzzzzzzaBcDezzzz";
1283 text[4][19]=
"zzzzzzzzzzzzzzzzzzzaBcDezzz";
1284 text[4][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDezz";
1285 text[4][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDez";
1286 text[4][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBcDe";
1287 text[5][0]=
"aBcDeFzzzzzzzzzzzzzzzzzzzzz";
1288 text[5][1]=
"zaBcDeFzzzzzzzzzzzzzzzzzzzz";
1289 text[5][2]=
"zzaBcDeFzzzzzzzzzzzzzzzzzzz";
1290 text[5][3]=
"zzzaBcDeFzzzzzzzzzzzzzzzzzz";
1291 text[5][4]=
"zzzzaBcDeFzzzzzzzzzzzzzzzzz";
1292 text[5][5]=
"zzzzzaBcDeFzzzzzzzzzzzzzzzz";
1293 text[5][6]=
"zzzzzzaBcDeFzzzzzzzzzzzzzzz";
1294 text[5][7]=
"zzzzzzzaBcDeFzzzzzzzzzzzzzz";
1295 text[5][8]=
"zzzzzzzzaBcDeFzzzzzzzzzzzzz";
1296 text[5][9]=
"zzzzzzzzzaBcDeFzzzzzzzzzzzz";
1297 text[5][10]=
"zzzzzzzzzzaBcDeFzzzzzzzzzzz";
1298 text[5][11]=
"zzzzzzzzzzzaBcDeFzzzzzzzzzz";
1299 text[5][12]=
"zzzzzzzzzzzzaBcDeFzzzzzzzzz";
1300 text[5][13]=
"zzzzzzzzzzzzzaBcDeFzzzzzzzz";
1301 text[5][14]=
"zzzzzzzzzzzzzzaBcDeFzzzzzzz";
1302 text[5][15]=
"zzzzzzzzzzzzzzzaBcDeFzzzzzz";
1303 text[5][16]=
"zzzzzzzzzzzzzzzzaBcDeFzzzzz";
1304 text[5][17]=
"zzzzzzzzzzzzzzzzzaBcDeFzzzz";
1305 text[5][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFzzz";
1306 text[5][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFzz";
1307 text[5][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFz";
1308 text[5][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDeF";
1309 text[6][0]=
"aBcDeFgzzzzzzzzzzzzzzzzzzzz";
1310 text[6][1]=
"zaBcDeFgzzzzzzzzzzzzzzzzzzz";
1311 text[6][2]=
"zzaBcDeFgzzzzzzzzzzzzzzzzzz";
1312 text[6][3]=
"zzzaBcDeFgzzzzzzzzzzzzzzzzz";
1313 text[6][4]=
"zzzzaBcDeFgzzzzzzzzzzzzzzzz";
1314 text[6][5]=
"zzzzzaBcDeFgzzzzzzzzzzzzzzz";
1315 text[6][6]=
"zzzzzzaBcDeFgzzzzzzzzzzzzzz";
1316 text[6][7]=
"zzzzzzzaBcDeFgzzzzzzzzzzzzz";
1317 text[6][8]=
"zzzzzzzzaBcDeFgzzzzzzzzzzzz";
1318 text[6][9]=
"zzzzzzzzzaBcDeFgzzzzzzzzzzz";
1319 text[6][10]=
"zzzzzzzzzzaBcDeFgzzzzzzzzzz";
1320 text[6][11]=
"zzzzzzzzzzzaBcDeFgzzzzzzzzz";
1321 text[6][12]=
"zzzzzzzzzzzzaBcDeFgzzzzzzzz";
1322 text[6][13]=
"zzzzzzzzzzzzzaBcDeFgzzzzzzz";
1323 text[6][14]=
"zzzzzzzzzzzzzzaBcDeFgzzzzzz";
1324 text[6][15]=
"zzzzzzzzzzzzzzzaBcDeFgzzzzz";
1325 text[6][16]=
"zzzzzzzzzzzzzzzzaBcDeFgzzzz";
1326 text[6][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgzzz";
1327 text[6][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgzz";
1328 text[6][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFgz";
1329 text[6][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
1330 text[7][0]=
"aBcDeFgHzzzzzzzzzzzzzzzzzzz";
1331 text[7][1]=
"zaBcDeFgHzzzzzzzzzzzzzzzzzz";
1332 text[7][2]=
"zzaBcDeFgHzzzzzzzzzzzzzzzzz";
1333 text[7][3]=
"zzzaBcDeFgHzzzzzzzzzzzzzzzz";
1334 text[7][4]=
"zzzzaBcDeFgHzzzzzzzzzzzzzzz";
1335 text[7][5]=
"zzzzzaBcDeFgHzzzzzzzzzzzzzz";
1336 text[7][6]=
"zzzzzzaBcDeFgHzzzzzzzzzzzzz";
1337 text[7][7]=
"zzzzzzzaBcDeFgHzzzzzzzzzzzz";
1338 text[7][8]=
"zzzzzzzzaBcDeFgHzzzzzzzzzzz";
1339 text[7][9]=
"zzzzzzzzzaBcDeFgHzzzzzzzzzz";
1340 text[7][10]=
"zzzzzzzzzzaBcDeFgHzzzzzzzzz";
1341 text[7][11]=
"zzzzzzzzzzzaBcDeFgHzzzzzzzz";
1342 text[7][12]=
"zzzzzzzzzzzzaBcDeFgHzzzzzzz";
1343 text[7][13]=
"zzzzzzzzzzzzzaBcDeFgHzzzzzz";
1344 text[7][14]=
"zzzzzzzzzzzzzzaBcDeFgHzzzzz";
1345 text[7][15]=
"zzzzzzzzzzzzzzzaBcDeFgHzzzz";
1346 text[7][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHzzz";
1347 text[7][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHzz";
1348 text[7][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgHz";
1349 text[7][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFgH";
1350 text[8][0]=
"aBcDeFgHizzzzzzzzzzzzzzzzzz";
1351 text[8][1]=
"zaBcDeFgHizzzzzzzzzzzzzzzzz";
1352 text[8][2]=
"zzaBcDeFgHizzzzzzzzzzzzzzzz";
1353 text[8][3]=
"zzzaBcDeFgHizzzzzzzzzzzzzzz";
1354 text[8][4]=
"zzzzaBcDeFgHizzzzzzzzzzzzzz";
1355 text[8][5]=
"zzzzzaBcDeFgHizzzzzzzzzzzzz";
1356 text[8][6]=
"zzzzzzaBcDeFgHizzzzzzzzzzzz";
1357 text[8][7]=
"zzzzzzzaBcDeFgHizzzzzzzzzzz";
1358 text[8][8]=
"zzzzzzzzaBcDeFgHizzzzzzzzzz";
1359 text[8][9]=
"zzzzzzzzzaBcDeFgHizzzzzzzzz";
1360 text[8][10]=
"zzzzzzzzzzaBcDeFgHizzzzzzzz";
1361 text[8][11]=
"zzzzzzzzzzzaBcDeFgHizzzzzzz";
1362 text[8][12]=
"zzzzzzzzzzzzaBcDeFgHizzzzzz";
1363 text[8][13]=
"zzzzzzzzzzzzzaBcDeFgHizzzzz";
1364 text[8][14]=
"zzzzzzzzzzzzzzaBcDeFgHizzzz";
1365 text[8][15]=
"zzzzzzzzzzzzzzzaBcDeFgHizzz";
1366 text[8][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHizz";
1367 text[8][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHiz";
1368 text[8][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgHi";
1369 text[9][0]=
"aBcDeFgHiJzzzzzzzzzzzzzzzzz";
1370 text[9][1]=
"zaBcDeFgHiJzzzzzzzzzzzzzzzz";
1371 text[9][2]=
"zzaBcDeFgHiJzzzzzzzzzzzzzzz";
1372 text[9][3]=
"zzzaBcDeFgHiJzzzzzzzzzzzzzz";
1373 text[9][4]=
"zzzzaBcDeFgHiJzzzzzzzzzzzzz";
1374 text[9][5]=
"zzzzzaBcDeFgHiJzzzzzzzzzzzz";
1375 text[9][6]=
"zzzzzzaBcDeFgHiJzzzzzzzzzzz";
1376 text[9][7]=
"zzzzzzzaBcDeFgHiJzzzzzzzzzz";
1377 text[9][8]=
"zzzzzzzzaBcDeFgHiJzzzzzzzzz";
1378 text[9][9]=
"zzzzzzzzzaBcDeFgHiJzzzzzzzz";
1379 text[9][10]=
"zzzzzzzzzzaBcDeFgHiJzzzzzzz";
1380 text[9][11]=
"zzzzzzzzzzzaBcDeFgHiJzzzzzz";
1381 text[9][12]=
"zzzzzzzzzzzzaBcDeFgHiJzzzzz";
1382 text[9][13]=
"zzzzzzzzzzzzzaBcDeFgHiJzzzz";
1383 text[9][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJzzz";
1384 text[9][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJzz";
1385 text[9][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHiJz";
1386 text[9][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHiJ";
1387 text[10][0]=
"aBcDeFgHiJkzzzzzzzzzzzzzzzz";
1388 text[10][1]=
"zaBcDeFgHiJkzzzzzzzzzzzzzzz";
1389 text[10][2]=
"zzaBcDeFgHiJkzzzzzzzzzzzzzz";
1390 text[10][3]=
"zzzaBcDeFgHiJkzzzzzzzzzzzzz";
1391 text[10][4]=
"zzzzaBcDeFgHiJkzzzzzzzzzzzz";
1392 text[10][5]=
"zzzzzaBcDeFgHiJkzzzzzzzzzzz";
1393 text[10][6]=
"zzzzzzaBcDeFgHiJkzzzzzzzzzz";
1394 text[10][7]=
"zzzzzzzaBcDeFgHiJkzzzzzzzzz";
1395 text[10][8]=
"zzzzzzzzaBcDeFgHiJkzzzzzzzz";
1396 text[10][9]=
"zzzzzzzzzaBcDeFgHiJkzzzzzzz";
1397 text[10][10]=
"zzzzzzzzzzaBcDeFgHiJkzzzzzz";
1398 text[10][11]=
"zzzzzzzzzzzaBcDeFgHiJkzzzzz";
1399 text[10][12]=
"zzzzzzzzzzzzaBcDeFgHiJkzzzz";
1400 text[10][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkzzz";
1401 text[10][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkzz";
1402 text[10][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJkz";
1403 text[10][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHiJk";
1404 text[11][0]=
"aBcDeFgHiJkLzzzzzzzzzzzzzzz";
1405 text[11][1]=
"zaBcDeFgHiJkLzzzzzzzzzzzzzz";
1406 text[11][2]=
"zzaBcDeFgHiJkLzzzzzzzzzzzzz";
1407 text[11][3]=
"zzzaBcDeFgHiJkLzzzzzzzzzzzz";
1408 text[11][4]=
"zzzzaBcDeFgHiJkLzzzzzzzzzzz";
1409 text[11][5]=
"zzzzzaBcDeFgHiJkLzzzzzzzzzz";
1410 text[11][6]=
"zzzzzzaBcDeFgHiJkLzzzzzzzzz";
1411 text[11][7]=
"zzzzzzzaBcDeFgHiJkLzzzzzzzz";
1412 text[11][8]=
"zzzzzzzzaBcDeFgHiJkLzzzzzzz";
1413 text[11][9]=
"zzzzzzzzzaBcDeFgHiJkLzzzzzz";
1414 text[11][10]=
"zzzzzzzzzzaBcDeFgHiJkLzzzzz";
1415 text[11][11]=
"zzzzzzzzzzzaBcDeFgHiJkLzzzz";
1416 text[11][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLzzz";
1417 text[11][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLzz";
1418 text[11][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkLz";
1419 text[11][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJkL";
1420 text[12][0]=
"aBcDeFgHiJkLmzzzzzzzzzzzzzz";
1421 text[12][1]=
"zaBcDeFgHiJkLmzzzzzzzzzzzzz";
1422 text[12][2]=
"zzaBcDeFgHiJkLmzzzzzzzzzzzz";
1423 text[12][3]=
"zzzaBcDeFgHiJkLmzzzzzzzzzzz";
1424 text[12][4]=
"zzzzaBcDeFgHiJkLmzzzzzzzzzz";
1425 text[12][5]=
"zzzzzaBcDeFgHiJkLmzzzzzzzzz";
1426 text[12][6]=
"zzzzzzaBcDeFgHiJkLmzzzzzzzz";
1427 text[12][7]=
"zzzzzzzaBcDeFgHiJkLmzzzzzzz";
1428 text[12][8]=
"zzzzzzzzaBcDeFgHiJkLmzzzzzz";
1429 text[12][9]=
"zzzzzzzzzaBcDeFgHiJkLmzzzzz";
1430 text[12][10]=
"zzzzzzzzzzaBcDeFgHiJkLmzzzz";
1431 text[12][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmzzz";
1432 text[12][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmzz";
1433 text[12][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLmz";
1434 text[12][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkLm";
1435 text[13][0]=
"aBcDeFgHiJkLmNzzzzzzzzzzzzz";
1436 text[13][1]=
"zaBcDeFgHiJkLmNzzzzzzzzzzzz";
1437 text[13][2]=
"zzaBcDeFgHiJkLmNzzzzzzzzzzz";
1438 text[13][3]=
"zzzaBcDeFgHiJkLmNzzzzzzzzzz";
1439 text[13][4]=
"zzzzaBcDeFgHiJkLmNzzzzzzzzz";
1440 text[13][5]=
"zzzzzaBcDeFgHiJkLmNzzzzzzzz";
1441 text[13][6]=
"zzzzzzaBcDeFgHiJkLmNzzzzzzz";
1442 text[13][7]=
"zzzzzzzaBcDeFgHiJkLmNzzzzzz";
1443 text[13][8]=
"zzzzzzzzaBcDeFgHiJkLmNzzzzz";
1444 text[13][9]=
"zzzzzzzzzaBcDeFgHiJkLmNzzzz";
1445 text[13][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNzzz";
1446 text[13][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNzz";
1447 text[13][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmNz";
1448 text[13][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLmN";
1449 text[14][0]=
"aBcDeFgHiJkLmNozzzzzzzzzzzz";
1450 text[14][1]=
"zaBcDeFgHiJkLmNozzzzzzzzzzz";
1451 text[14][2]=
"zzaBcDeFgHiJkLmNozzzzzzzzzz";
1452 text[14][3]=
"zzzaBcDeFgHiJkLmNozzzzzzzzz";
1453 text[14][4]=
"zzzzaBcDeFgHiJkLmNozzzzzzzz";
1454 text[14][5]=
"zzzzzaBcDeFgHiJkLmNozzzzzzz";
1455 text[14][6]=
"zzzzzzaBcDeFgHiJkLmNozzzzzz";
1456 text[14][7]=
"zzzzzzzaBcDeFgHiJkLmNozzzzz";
1457 text[14][8]=
"zzzzzzzzaBcDeFgHiJkLmNozzzz";
1458 text[14][9]=
"zzzzzzzzzaBcDeFgHiJkLmNozzz";
1459 text[14][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNozz";
1460 text[14][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNoz";
1461 text[14][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmNo";
1462 text[15][0]=
"aBcDeFgHiJkLmNoPzzzzzzzzzzz";
1463 text[15][1]=
"zaBcDeFgHiJkLmNoPzzzzzzzzzz";
1464 text[15][2]=
"zzaBcDeFgHiJkLmNoPzzzzzzzzz";
1465 text[15][3]=
"zzzaBcDeFgHiJkLmNoPzzzzzzzz";
1466 text[15][4]=
"zzzzaBcDeFgHiJkLmNoPzzzzzzz";
1467 text[15][5]=
"zzzzzaBcDeFgHiJkLmNoPzzzzzz";
1468 text[15][6]=
"zzzzzzaBcDeFgHiJkLmNoPzzzzz";
1469 text[15][7]=
"zzzzzzzaBcDeFgHiJkLmNoPzzzz";
1470 text[15][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPzzz";
1471 text[15][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPzz";
1472 text[15][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNoPz";
1473 text[15][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNoP";
1474 text[16][0]=
"aBcDeFgHiJkLmNoPqzzzzzzzzzz";
1475 text[16][1]=
"zaBcDeFgHiJkLmNoPqzzzzzzzzz";
1476 text[16][2]=
"zzaBcDeFgHiJkLmNoPqzzzzzzzz";
1477 text[16][3]=
"zzzaBcDeFgHiJkLmNoPqzzzzzzz";
1478 text[16][4]=
"zzzzaBcDeFgHiJkLmNoPqzzzzzz";
1479 text[16][5]=
"zzzzzaBcDeFgHiJkLmNoPqzzzzz";
1480 text[16][6]=
"zzzzzzaBcDeFgHiJkLmNoPqzzzz";
1481 text[16][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqzzz";
1482 text[16][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqzz";
1483 text[16][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPqz";
1484 text[16][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNoPq";
1485 text[17][0]=
"aBcDeFgHiJkLmNoPqRzzzzzzzzz";
1486 text[17][1]=
"zaBcDeFgHiJkLmNoPqRzzzzzzzz";
1487 text[17][2]=
"zzaBcDeFgHiJkLmNoPqRzzzzzzz";
1488 text[17][3]=
"zzzaBcDeFgHiJkLmNoPqRzzzzzz";
1489 text[17][4]=
"zzzzaBcDeFgHiJkLmNoPqRzzzzz";
1490 text[17][5]=
"zzzzzaBcDeFgHiJkLmNoPqRzzzz";
1491 text[17][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRzzz";
1492 text[17][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRzz";
1493 text[17][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqRz";
1494 text[17][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPqR";
1495 text[18][0]=
"aBcDeFgHiJkLmNoPqRszzzzzzzz";
1496 text[18][1]=
"zaBcDeFgHiJkLmNoPqRszzzzzzz";
1497 text[18][2]=
"zzaBcDeFgHiJkLmNoPqRszzzzzz";
1498 text[18][3]=
"zzzaBcDeFgHiJkLmNoPqRszzzzz";
1499 text[18][4]=
"zzzzaBcDeFgHiJkLmNoPqRszzzz";
1500 text[18][5]=
"zzzzzaBcDeFgHiJkLmNoPqRszzz";
1501 text[18][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRszz";
1502 text[18][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRsz";
1503 text[18][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqRs";
1504 text[19][0]=
"aBcDeFgHiJkLmNoPqRsTzzzzzzz";
1505 text[19][1]=
"zaBcDeFgHiJkLmNoPqRsTzzzzzz";
1506 text[19][2]=
"zzaBcDeFgHiJkLmNoPqRsTzzzzz";
1507 text[19][3]=
"zzzaBcDeFgHiJkLmNoPqRsTzzzz";
1508 text[19][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTzzz";
1509 text[19][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTzz";
1510 text[19][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRsTz";
1511 text[19][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRsT";
1512 text[20][0]=
"aBcDeFgHiJkLmNoPqRsTuzzzzzz";
1513 text[20][1]=
"zaBcDeFgHiJkLmNoPqRsTuzzzzz";
1514 text[20][2]=
"zzaBcDeFgHiJkLmNoPqRsTuzzzz";
1515 text[20][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuzzz";
1516 text[20][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuzz";
1517 text[20][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTuz";
1518 text[20][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRsTu";
1519 text[21][0]=
"aBcDeFgHiJkLmNoPqRsTuVzzzzz";
1520 text[21][1]=
"zaBcDeFgHiJkLmNoPqRsTuVzzzz";
1521 text[21][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVzzz";
1522 text[21][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVzz";
1523 text[21][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuVz";
1524 text[21][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTuV";
1525 text[22][0]=
"aBcDeFgHiJkLmNoPqRsTuVwzzzz";
1526 text[22][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwzzz";
1527 text[22][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwzz";
1528 text[22][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVwz";
1529 text[22][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuVw";
1530 text[23][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXzzz";
1531 text[23][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXzz";
1532 text[23][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwXz";
1533 text[23][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVwX";
1534 text[24][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXyzz";
1535 text[24][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXyz";
1536 text[24][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwXy";
1537 text[25][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXyZz";
1538 text[25][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXyZ";
1540 const char *needle[26];
1547 needle[6]=
"AbCdEfG";
1548 needle[7]=
"AbCdEfGh";
1549 needle[8]=
"AbCdEfGhI";
1550 needle[9]=
"AbCdEfGhIJ";
1551 needle[10]=
"AbCdEfGhIjK";
1552 needle[11]=
"AbCdEfGhIjKl";
1553 needle[12]=
"AbCdEfGhIjKlM";
1554 needle[13]=
"AbCdEfGhIjKlMn";
1555 needle[14]=
"AbCdEfGhIjKlMnO";
1556 needle[15]=
"AbCdEfGhIjKlMnOp";
1557 needle[16]=
"AbCdEfGhIjKlMnOpQ";
1558 needle[17]=
"AbCdEfGhIjKlMnOpQr";
1559 needle[18]=
"AbCdEfGhIjKlMnOpQrS";
1560 needle[19]=
"AbCdEfGhIjKlMnOpQrSt";
1561 needle[20]=
"AbCdEfGhIjKlMnOpQrStU";
1562 needle[21]=
"AbCdEfGhIjKlMnOpQrStUv";
1563 needle[22]=
"AbCdEfGhIjKlMnOpQrStUvW";
1564 needle[23]=
"AbCdEfGhIjKlMnOpQrStUvWx";
1565 needle[24]=
"AbCdEfGhIjKlMnOpQrStUvWxY";
1566 needle[25]=
"AbCdEfGhIjKlMnOpQrStUvWxYZ";
1569 uint8_t *found = NULL;
1570 for (i = 0; i < 26; i++) {
1571 for (j = 0; j <= (26-i); j++) {
1572 found = BasicSearchNocaseWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1574 found = Bs2bmNocaseWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1576 found = BoyerMooreNocaseWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1583 #ifdef ENABLE_SEARCH_STATS
1587 static int UtilSpmSearchStatsTest01(
void)
1590 text[0]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzza";
1591 text[1]=
"aaaaaaaaazaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaazaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaazaaaaaraaaaazaaaaaaazaaaaaaaaaaaaaazaaaaaaaazaaaaaaaaazaaaaaaaaaaaaB";
1592 text[2]=
"aBaBaBaBaBaBaBaBazaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBzBaBaBaBaBaBaBzBaBaBaBaBzBaBaBaBaBaBzBaBaBaBaBaBzBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBazaBaBaBaBaBc";
1593 text[3]=
"aBcaBcaBcaBcaBczBcaBcaBzaBcaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBzaBcaBcaBcazcaBcaBcaBcaBcaBcD";
1594 text[4]=
"aBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDzBcDaBcDaBcDaBcDzBcDaBcDaBczaBcDaBcDaBczaBcDaBcDaBcDaBcDaBzDaBcDaBcDaBcDaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDaBcDaBzDaBcDaBcDaBcDaBzDaBcDaBcDaBzDaBcDaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDazcDaBcDaBcDaBcDaBcDzBcDaBcDaBcDaBcDaBcDaBcDe";
1595 text[5]=
"aBcDeaBcDeaBcDeazcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDezBcDeaBcDeaBcDzaBcDeaBcDeaBcDeazcDzaBcDeaBcDezBcDeaBzDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBczeaBcDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDzaBcDeaBcDezBcDeaBcDezBcDeaBczeaBcDeaBcDeaBzDeaBcDezBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeF";
1596 text[6]=
"aBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBczzaBcDeaBcDeaBcDzazcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDeaBczeaBcDezzzaBcDeFg";
1597 text[7]=
"aBcDeaBczeaBcDzaBcDezBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBzDzaBcDeaBcDeazcDeaBcDzaBcDeaBczeaBcDeaBcDeaBzDzaBcDeaBcDeaBcDezBcDzaBcDeaBzDeaBcDeaBcDezBcDzaBcDeaBcDeaBzDeaBcDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBrDeaBcDeaBcDezzzaBcDeFgH";
1598 text[8]=
"aBcDeaBcDeaBczzaBcDeazcDeaBcDezBcDeaBcDzaBcDeaBcDeaBcDeaBczzaBcDeaBcDeaBczeaBcDeaBcDzzBcDeaBcDeaBcDzaBczeaBcDeaBcDzaBcDeaBczeaBcDeaBcDeaBzDeaBcDeaBcDeaBzDeaBcDeaBcDzaBcDeaBcDeazcDeaBcDeaBcDzaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBczeaBcDeaBzDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHi";
1599 text[9]=
"aBcDeaBcDzaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeazcDeaBcDeaBcDzzBcDeaBcDeaBczeaBcDzaBcDezBcDeaBczeaBcDzaBcDezBcDeaBcDzaBczeaBcDeaBcDzaBcDeazcDeaBcDeaBcDzaBczeaBcDeaBcDzaBzDeaBcDeaBczeaBcDeaBcDzaBcDeaBcDeaBzDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDeaBzDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJ";
1600 text[10]=
"aBcDeaBcDeaBczeaBcDzaBczeaBcDeaBczeaBcDeaBcDzaBcDeaBcDeazcDeaBcDeaBcDeaBzDzaBcDeazcDeaBcDeazcDeaBcDzaBcDeazcDeaBcDeaBczzaBcDeaBcDeaBzDeaBcDeaBcDzaBczeaBcDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDezBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDezBcDeaBcDeaBcDeaBzDeaBcDeaBcDezzzaBcDeFgHiJk";
1601 text[11]=
"aBcDeaBcDeaBcDeaBcDeaBzDeaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDeazcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDzzBcDeaBcDeaBcDeaBcDzaBcDzaBcDeaBzDeaBcDeaBcDezBcDeaBcDeazcDeaBcDeaBcDezBcDeaBcDeaBcDeazcDeaBcDeaBzDeaBcDeaBczeaBcDeazcDeaBcDezBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkL";
1602 text[12]=
"aBcDeaBcDeaBcDeaBcDeaBzDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDeazcDeaBcDeaBcDeazcDeaBcDeaBczeaBcDeaBcDeaBcDezBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLm";
1603 text[13]=
"aBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLmN";
1604 text[14]=
"aBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDezzzaBcDeFgHiJkLmNo";
1605 text[15]=
"aBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLmNoP";
1614 needle[6]=
"aBcDeFg";
1615 needle[7]=
"aBcDeFgH";
1616 needle[8]=
"aBcDeFgHi";
1617 needle[9]=
"aBcDeFgHiJ";
1618 needle[10]=
"aBcDeFgHiJk";
1619 needle[11]=
"aBcDeFgHiJkL";
1620 needle[12]=
"aBcDeFgHiJkLm";
1621 needle[13]=
"aBcDeFgHiJkLmN";
1622 needle[14]=
"aBcDeFgHiJkLmNo";
1623 needle[15]=
"aBcDeFgHiJkLmNoP";
1626 uint8_t *found = NULL;
1627 printf(
"\nStats for text of greater length (text with a lot of partial matches, worst case for a basic search):\n");
1628 for (i = 0; i < 16; i++) {
1629 printf(
"Pattern length %d with BasicSearch:", i+1);
1630 found = BasicSearchWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1632 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
1633 found = Bs2bmWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1635 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
1636 found = BoyerMooreWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1646 static int UtilSpmSearchStatsTest02(
void)
1649 text[0]=
"zzzzzzzzzzzzzzzzzza";
1650 text[1]=
"zzzzzzzzzzzzzzzzzzaB";
1651 text[2]=
"zzzzzzzzzzzzzzzzzzaBc";
1652 text[3]=
"zzzzzzzzzzzzzzzzzzaBcD";
1653 text[4]=
"zzzzzzzzzzzzzzzzzzaBcDe";
1654 text[5]=
"zzzzzzzzzzzzzzzzzzzzaBcDeF";
1655 text[6]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
1656 text[7]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgH";
1657 text[8]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
1658 text[9]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
1659 text[10]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
1660 text[11]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
1661 text[12]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
1662 text[13]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
1663 text[14]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
1664 text[15]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
1673 needle[6]=
"aBcDeFg";
1674 needle[7]=
"aBcDeFgH";
1675 needle[8]=
"aBcDeFgHi";
1676 needle[9]=
"aBcDeFgHiJ";
1677 needle[10]=
"aBcDeFgHiJk";
1678 needle[11]=
"aBcDeFgHiJkL";
1679 needle[12]=
"aBcDeFgHiJkLm";
1680 needle[13]=
"aBcDeFgHiJkLmN";
1681 needle[14]=
"aBcDeFgHiJkLmNo";
1682 needle[15]=
"aBcDeFgHiJkLmNoP";
1685 uint8_t *found = NULL;
1686 printf(
"\nStats for text of lower length:\n");
1687 for (i = 0; i < 16; i++) {
1688 printf(
"Pattern length %d with BasicSearch:", i+1);
1689 found = BasicSearchWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1691 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
1692 found = Bs2bmWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1694 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
1695 found = BoyerMooreWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1703 static int UtilSpmSearchStatsTest03(
void)
1708 text[2]=
"zzzzzzaBc";
1709 text[3]=
"zzzzzzaBcD";
1710 text[4]=
"zzzzzzaBcDe";
1711 text[5]=
"zzzzzzzzaBcDeF";
1712 text[6]=
"zzzzzzzzaBcDeFg";
1713 text[7]=
"zzzzzzzzaBcDeFgH";
1714 text[8]=
"zzzzzzzzaBcDeFgHi";
1715 text[9]=
"zzzzzzzzaBcDeFgHiJ";
1716 text[10]=
"zzzzzzzzaBcDeFgHiJk";
1717 text[11]=
"zzzzzzzzaBcDeFgHiJkL";
1718 text[12]=
"zzzzzzzzaBcDeFgHiJkLm";
1719 text[13]=
"zzzzzzzzaBcDeFgHiJkLmN";
1720 text[14]=
"zzzzzzzzaBcDeFgHiJkLmNo";
1721 text[15]=
"zzzzzzzzaBcDeFgHiJkLmNoP";
1730 needle[6]=
"aBcDeFg";
1731 needle[7]=
"aBcDeFgH";
1732 needle[8]=
"aBcDeFgHi";
1733 needle[9]=
"aBcDeFgHiJ";
1734 needle[10]=
"aBcDeFgHiJk";
1735 needle[11]=
"aBcDeFgHiJkL";
1736 needle[12]=
"aBcDeFgHiJkLm";
1737 needle[13]=
"aBcDeFgHiJkLmN";
1738 needle[14]=
"aBcDeFgHiJkLmNo";
1739 needle[15]=
"aBcDeFgHiJkLmNoP";
1742 uint8_t *found = NULL;
1743 printf(
"\nStats for text of lower length (badcase for):\n");
1744 for (i = 0; i < 16; i++) {
1745 printf(
"Pattern length %d with BasicSearch:", i+1);
1746 found = BasicSearchWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1749 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
1750 found = Bs2bmWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1752 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
1753 found = BoyerMooreWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1764 static int UtilSpmSearchStatsTest04(
void)
1767 text[0]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzza";
1768 text[1]=
"aaaaaaaaazaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaazaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaazaaaaaraaaaazaaaaaaazaaaaaaaaaaaaaazaaaaaaaazaaaaaaaaazaaaaaaaaaaaaB";
1769 text[2]=
"aBaBaBaBaBaBaBaBazaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBzBaBaBaBaBaBaBzBaBaBaBaBzBaBaBaBaBaBzBaBaBaBaBaBzBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBazaBaBaBaBaBc";
1770 text[3]=
"aBcaBcaBcaBcaBczBcaBcaBzaBcaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBzaBcaBcaBcazcaBcaBcaBcaBcaBcD";
1771 text[4]=
"aBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDzBcDaBcDaBcDaBcDzBcDaBcDaBczaBcDaBcDaBczaBcDaBcDaBcDaBcDaBzDaBcDaBcDaBcDaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDaBcDaBzDaBcDaBcDaBcDaBzDaBcDaBcDaBzDaBcDaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDazcDaBcDaBcDaBcDaBcDzBcDaBcDaBcDaBcDaBcDaBcDe";
1772 text[5]=
"aBcDeaBcDeaBcDeazcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDezBcDeaBcDeaBcDzaBcDeaBcDeaBcDeazcDzaBcDeaBcDezBcDeaBzDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBczeaBcDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDzaBcDeaBcDezBcDeaBcDezBcDeaBczeaBcDeaBcDeaBzDeaBcDezBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeF";
1773 text[6]=
"aBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBczzaBcDeaBcDeaBcDzazcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDeaBczeaBcDezzzaBcDeFg";
1774 text[7]=
"aBcDeaBczeaBcDzaBcDezBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBzDzaBcDeaBcDeazcDeaBcDzaBcDeaBczeaBcDeaBcDeaBzDzaBcDeaBcDeaBcDezBcDzaBcDeaBzDeaBcDeaBcDezBcDzaBcDeaBcDeaBzDeaBcDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBrDeaBcDeaBcDezzzaBcDeFgH";
1775 text[8]=
"aBcDeaBcDeaBczzaBcDeazcDeaBcDezBcDeaBcDzaBcDeaBcDeaBcDeaBczzaBcDeaBcDeaBczeaBcDeaBcDzzBcDeaBcDeaBcDzaBczeaBcDeaBcDzaBcDeaBczeaBcDeaBcDeaBzDeaBcDeaBcDeaBzDeaBcDeaBcDzaBcDeaBcDeazcDeaBcDeaBcDzaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBczeaBcDeaBzDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHi";
1776 text[9]=
"aBcDeaBcDzaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeazcDeaBcDeaBcDzzBcDeaBcDeaBczeaBcDzaBcDezBcDeaBczeaBcDzaBcDezBcDeaBcDzaBczeaBcDeaBcDzaBcDeazcDeaBcDeaBcDzaBczeaBcDeaBcDzaBzDeaBcDeaBczeaBcDeaBcDzaBcDeaBcDeaBzDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDeaBzDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJ";
1777 text[10]=
"aBcDeaBcDeaBczeaBcDzaBczeaBcDeaBczeaBcDeaBcDzaBcDeaBcDeazcDeaBcDeaBcDeaBzDzaBcDeazcDeaBcDeazcDeaBcDzaBcDeazcDeaBcDeaBczzaBcDeaBcDeaBzDeaBcDeaBcDzaBczeaBcDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDezBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDezBcDeaBcDeaBcDeaBzDeaBcDeaBcDezzzaBcDeFgHiJk";
1778 text[11]=
"aBcDeaBcDeaBcDeaBcDeaBzDeaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDeazcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDzzBcDeaBcDeaBcDeaBcDzaBcDzaBcDeaBzDeaBcDeaBcDezBcDeaBcDeazcDeaBcDeaBcDezBcDeaBcDeaBcDeazcDeaBcDeaBzDeaBcDeaBczeaBcDeazcDeaBcDezBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkL";
1779 text[12]=
"aBcDeaBcDeaBcDeaBcDeaBzDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDeazcDeaBcDeaBcDeazcDeaBcDeaBczeaBcDeaBcDeaBcDezBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLm";
1780 text[13]=
"aBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLmN";
1781 text[14]=
"aBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDezzzaBcDeFgHiJkLmNo";
1782 text[15]=
"aBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLmNoP";
1792 needle[6]=
"aBcDeFg";
1793 needle[7]=
"aBcDeFgH";
1794 needle[8]=
"aBcDeFgHi";
1795 needle[9]=
"aBcDeFgHiJ";
1796 needle[10]=
"aBcDeFgHiJk";
1797 needle[11]=
"aBcDeFgHiJkL";
1798 needle[12]=
"aBcDeFgHiJkLm";
1799 needle[13]=
"aBcDeFgHiJkLmN";
1800 needle[14]=
"aBcDeFgHiJkLmNo";
1801 needle[15]=
"aBcDeFgHiJkLmNoP";
1804 uint8_t *found = NULL;
1805 printf(
"\nStats for text of greater length:\n");
1806 for (i = 0; i < 16; i++) {
1807 printf(
"Pattern length %d with BasicSearch (Building Context):", i + 1);
1808 found = BasicSearchCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1811 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i + 1);
1812 found = Bs2bmCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1815 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i + 1);
1816 found = BoyerMooreCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1819 printf(
"Pattern length %d with SpmSearch (Building Context):", i + 1);
1820 found = RawCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1831 static int UtilSpmSearchStatsTest05(
void)
1834 text[0]=
"zzzzzzzzzzzzzzzzzza";
1835 text[1]=
"zzzzzzzzzzzzzzzzzzaB";
1836 text[2]=
"zzzzzzzzzzzzzzzzzzaBc";
1837 text[3]=
"zzzzzzzzzzzzzzzzzzaBcD";
1838 text[4]=
"zzzzzzzzzzzzzzzzzzaBcDe";
1839 text[5]=
"zzzzzzzzzzzzzzzzzzzzaBcDeF";
1840 text[6]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
1841 text[7]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgH";
1842 text[8]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
1843 text[9]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
1844 text[10]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
1845 text[11]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
1846 text[12]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
1847 text[13]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
1848 text[14]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
1849 text[15]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
1858 needle[6]=
"aBcDeFg";
1859 needle[7]=
"aBcDeFgH";
1860 needle[8]=
"aBcDeFgHi";
1861 needle[9]=
"aBcDeFgHiJ";
1862 needle[10]=
"aBcDeFgHiJk";
1863 needle[11]=
"aBcDeFgHiJkL";
1864 needle[12]=
"aBcDeFgHiJkLm";
1865 needle[13]=
"aBcDeFgHiJkLmN";
1866 needle[14]=
"aBcDeFgHiJkLmNo";
1867 needle[15]=
"aBcDeFgHiJkLmNoP";
1870 uint8_t *found = NULL;
1871 printf(
"\nStats for text of lower length:\n");
1872 for (i = 0; i < 16; i++) {
1873 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
1874 found = BasicSearchCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1877 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
1878 found = Bs2bmCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1881 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
1882 found = BoyerMooreCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1891 static int UtilSpmSearchStatsTest06(
void)
1894 text[0]=
"zzzzkzzzzzzzkzzzzzza";
1895 text[1]=
"BBBBkBBBBBBBkBBBBBaB";
1896 text[2]=
"BcBckcBcBcBckcBcBcaBc";
1897 text[3]=
"BcDBkDBcDBcDkcDBcDaBcD";
1898 text[4]=
"BcDekcDeBcDekcDezzaBcDe";
1908 uint8_t *found = NULL;
1909 printf(
"\nStats for text of lower length (badcase for):\n");
1910 for (i = 0; i < 5; i++) {
1911 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
1912 found = BasicSearchCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1915 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
1916 found = Bs2bmCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1919 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
1920 found = BoyerMooreCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1928 static int UtilSpmSearchStatsTest07(
void)
1945 uint8_t *found = NULL;
1946 printf(
"\nStats for text of real lower length (badcase for):\n");
1947 for (i = 0; i < 5; i++) {
1948 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
1949 found = BasicSearchCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1952 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
1953 found = Bs2bmCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1957 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
1958 found = BoyerMooreCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1970 static int UtilSpmNocaseSearchStatsTest01(
void)
1973 text[0]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzza";
1974 text[1]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaB";
1975 text[2]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBc";
1976 text[3]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcD";
1977 text[4]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDe";
1978 text[5]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeF";
1979 text[6]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFg";
1980 text[7]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgH";
1981 text[8]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
1982 text[9]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
1983 text[10]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
1984 text[11]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
1985 text[12]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
1986 text[13]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
1987 text[14]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
1988 text[15]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
1997 needle[6]=
"aBcDeFg";
1998 needle[7]=
"aBcDeFgH";
1999 needle[8]=
"aBcDeFgHi";
2000 needle[9]=
"aBcDeFgHiJ";
2001 needle[10]=
"aBcDeFgHiJk";
2002 needle[11]=
"aBcDeFgHiJkL";
2003 needle[12]=
"aBcDeFgHiJkLm";
2004 needle[13]=
"aBcDeFgHiJkLmN";
2005 needle[14]=
"aBcDeFgHiJkLmNo";
2006 needle[15]=
"aBcDeFgHiJkLmNoP";
2009 uint8_t *found = NULL;
2010 printf(
"\nStats for text of greater length:\n");
2011 for (i = 0; i < 16; i++) {
2012 printf(
"Pattern length %d with BasicSearch:", i+1);
2013 found = BasicSearchNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2016 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
2017 found = Bs2bmNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2020 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
2021 found = BoyerMooreNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2029 static int UtilSpmNocaseSearchStatsTest02(
void)
2032 text[0]=
"zzzzzzzzzzzzzzzzzza";
2033 text[1]=
"zzzzzzzzzzzzzzzzzzaB";
2034 text[2]=
"zzzzzzzzzzzzzzzzzzaBc";
2035 text[3]=
"zzzzzzzzzzzzzzzzzzaBcD";
2036 text[4]=
"zzzzzzzzzzzzzzzzzzaBcDe";
2037 text[5]=
"zzzzzzzzzzzzzzzzzzzzaBcDeF";
2038 text[6]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
2039 text[7]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgH";
2040 text[8]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
2041 text[9]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
2042 text[10]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
2043 text[11]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
2044 text[12]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
2045 text[13]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
2046 text[14]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
2047 text[15]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
2056 needle[6]=
"aBcDeFg";
2057 needle[7]=
"aBcDeFgH";
2058 needle[8]=
"aBcDeFgHi";
2059 needle[9]=
"aBcDeFgHiJ";
2060 needle[10]=
"aBcDeFgHiJk";
2061 needle[11]=
"aBcDeFgHiJkL";
2062 needle[12]=
"aBcDeFgHiJkLm";
2063 needle[13]=
"aBcDeFgHiJkLmN";
2064 needle[14]=
"aBcDeFgHiJkLmNo";
2065 needle[15]=
"aBcDeFgHiJkLmNoP";
2068 uint8_t *found = NULL;
2069 printf(
"\nStats for text of lower length:\n");
2070 for (i = 0; i < 16; i++) {
2071 printf(
"Pattern length %d with BasicSearch:", i+1);
2072 found = BasicSearchNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2075 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
2076 found = Bs2bmNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2079 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
2080 found = BoyerMooreNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2089 static int UtilSpmNocaseSearchStatsTest03(
void)
2092 text[0]=
"zzzzkzzzzzzzkzzzzzza";
2093 text[1]=
"BBBBkBBBBBBBkBBBBBaB";
2094 text[2]=
"BcBckcBcBcBckcBcBcaBc";
2095 text[3]=
"BcDBkDBcDBcDkcDBcDaBcD";
2096 text[4]=
"BcDekcDeBcDekcDezzaBcDe";
2106 uint8_t *found = NULL;
2107 printf(
"\nStats for text of lower length (badcase for):\n");
2108 for (i = 0; i < 5; i++) {
2109 printf(
"Pattern length %d with BasicSearch:", i+1);
2110 found = BasicSearchNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2113 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
2114 found = Bs2bmNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2117 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
2118 found = BoyerMooreNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2130 static int UtilSpmNocaseSearchStatsTest04(
void)
2133 text[0]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzza";
2134 text[1]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaB";
2135 text[2]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBc";
2136 text[3]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcD";
2137 text[4]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDe";
2138 text[5]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeF";
2139 text[6]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFg";
2140 text[7]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgH";
2141 text[8]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
2142 text[9]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
2143 text[10]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
2144 text[11]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
2145 text[12]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
2146 text[13]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
2147 text[14]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
2148 text[15]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
2157 needle[6]=
"aBcDeFg";
2158 needle[7]=
"aBcDeFgH";
2159 needle[8]=
"aBcDeFgHi";
2160 needle[9]=
"aBcDeFgHiJ";
2161 needle[10]=
"aBcDeFgHiJk";
2162 needle[11]=
"aBcDeFgHiJkL";
2163 needle[12]=
"aBcDeFgHiJkLm";
2164 needle[13]=
"aBcDeFgHiJkLmN";
2165 needle[14]=
"aBcDeFgHiJkLmNo";
2166 needle[15]=
"aBcDeFgHiJkLmNoP";
2169 uint8_t *found = NULL;
2170 printf(
"\nStats for text of greater length:\n");
2171 for (i = 0; i < 16; i++) {
2172 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
2173 found = BasicSearchNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2176 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
2177 found = Bs2bmNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2180 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
2181 found = BoyerMooreNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2189 static int UtilSpmNocaseSearchStatsTest05(
void)
2192 text[0]=
"zzzzzzzzzzzzzzzzzza";
2193 text[1]=
"zzzzzzzzzzzzzzzzzzaB";
2194 text[2]=
"zzzzzzzzzzzzzzzzzzaBc";
2195 text[3]=
"zzzzzzzzzzzzzzzzzzaBcD";
2196 text[4]=
"zzzzzzzzzzzzzzzzzzaBcDe";
2197 text[5]=
"zzzzzzzzzzzzzzzzzzzzaBcDeF";
2198 text[6]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
2199 text[7]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgH";
2200 text[8]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
2201 text[9]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
2202 text[10]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
2203 text[11]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
2204 text[12]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
2205 text[13]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
2206 text[14]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
2207 text[15]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
2216 needle[6]=
"aBcDeFg";
2217 needle[7]=
"aBcDeFgH";
2218 needle[8]=
"aBcDeFgHi";
2219 needle[9]=
"aBcDeFgHiJ";
2220 needle[10]=
"aBcDeFgHiJk";
2221 needle[11]=
"aBcDeFgHiJkL";
2222 needle[12]=
"aBcDeFgHiJkLm";
2223 needle[13]=
"aBcDeFgHiJkLmN";
2224 needle[14]=
"aBcDeFgHiJkLmNo";
2225 needle[15]=
"aBcDeFgHiJkLmNoP";
2228 uint8_t *found = NULL;
2229 printf(
"\nStats for text of lower length:\n");
2230 for (i = 0; i < 16; i++) {
2231 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
2232 found = BasicSearchNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2235 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
2236 found = Bs2bmNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2239 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
2240 found = BoyerMooreNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2249 static int UtilSpmNocaseSearchStatsTest06(
void)
2252 text[0]=
"zzzzkzzzzzzzkzzzzzza";
2253 text[1]=
"BBBBkBBBBBBBkBBBBBaB";
2254 text[2]=
"BcBckcBcBcBckcBcBcaBc";
2255 text[3]=
"BcDBkDBcDBcDkcDBcDaBcD";
2256 text[4]=
"BcDekcDeBcDekcDezzaBcDe";
2266 uint8_t *found = NULL;
2267 printf(
"\nStats for text of lower length (badcase for):\n");
2268 for (i = 0; i < 5; i++) {
2269 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
2270 found = BasicSearchNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2273 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
2274 found = Bs2bmNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2277 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
2278 found = BoyerMooreNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2286 static int UtilSpmNocaseSearchStatsTest07(
void)
2303 uint8_t *found = NULL;
2304 printf(
"\nStats for text of real lower length (badcase for):\n");
2305 for (i = 0; i < 5; i++) {
2306 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
2307 found = BasicSearchNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2310 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
2311 found = Bs2bmNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2314 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
2315 found = BoyerMooreNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2326 #define SPM_NO_MATCH UINT32_MAX
2339 static int SpmTestSearch(
const SpmTestData *d, uint8_t matcher)
2344 uint8_t *found = NULL;
2358 const uint8_t *haystack = (
const uint8_t *)d->
haystack;
2368 static int SpmSearchTest01(
void) {
2377 {
"a", 1,
"a", 1, 0, 0},
2378 {
"a", 1,
"A", 1, 1, 0},
2379 {
"A", 1,
"A", 1, 0, 0},
2380 {
"A", 1,
"a", 1, 1, 0},
2384 {
"\x00", 1,
"test\x00test", 9, 0, 4},
2386 {
"\n", 1,
"new line\n", 9, 0, 8},
2387 {
"\n", 1,
"new line\x00\n", 10, 0, 9},
2388 {
"\xff", 1,
"abcdef\xff", 7, 0, 6},
2389 {
"\xff", 1,
"abcdef\xff", 7, 1, 6},
2390 {
"$", 1,
"dollar$", 7, 0, 6},
2391 {
"^", 1,
"caret^", 6, 0, 5},
2393 {
"Suricata", 8,
"This is a Suricata test", 23, 0, 10},
2394 {
"Suricata", 8,
"This is a suricata test", 23, 1, 10},
2395 {
"Suricata", 8,
"This is a suriCATA test", 23, 1, 10},
2396 {
"suricata", 8,
"This is a Suricata test", 23, 0,
SPM_NO_MATCH},
2397 {
"Suricata", 8,
"This is a Suricat_ test", 23, 0,
SPM_NO_MATCH},
2398 {
"Suricata", 8,
"This is a _uricata test", 23, 0,
SPM_NO_MATCH},
2400 {
"foo", 3,
"foofoofoo", 9, 0, 0},
2401 {
"foo", 3,
"_foofoofoo", 9, 0, 1},
2402 {
"FOO", 3,
"foofoofoo", 9, 1, 0},
2403 {
"FOO", 3,
"_foofoofoo", 9, 1, 1},
2404 {
"FOO", 3,
"foo Foo FOo fOo foO FOO", 23, 0, 20},
2405 {
"foo", 3,
"Foo FOo fOo foO FOO foo", 23, 0, 20},
2410 if (
m->name == NULL) {
2413 for (uint32_t i = 0; i <
sizeof(data) /
sizeof(data[0]); i++) {
2415 FAIL_IF(SpmTestSearch(d, matcher) == 0);
2422 static int SpmSearchTest02(
void) {
2429 static const char* needles[] = {
2431 "a",
"b",
"c",
":",
"/",
"\x7f",
"\xff",
2433 "aa",
"aaa",
"aaaaaaaaaaaaaaaaaaaaaaa",
2435 "suricata",
"meerkat",
"aardvark",
"raptor",
"marmot",
"lemming",
2437 "Suricata",
"CAPS LOCK",
"mIxEd cAsE",
2443 if (
m->name == NULL) {
2446 printf(
"matcher: %s\n",
m->name);
2451 for (i = 0; i <
sizeof(needles) /
sizeof(needles[0]); i++) {
2452 const char *needle = needles[i];
2454 for (prefix = 0; prefix < 32; prefix++) {
2457 uint16_t haystack_len = prefix + d.
needle_len;
2458 char *haystack =
SCMalloc(haystack_len);
2460 memset(haystack,
' ', haystack_len);
2468 if (SpmTestSearch(&d, matcher) == 0) {
2469 printf(
" test %" PRIu32
": fail (case-sensitive)\n", i);
2476 for (j = 0; j < haystack_len; j++) {
2479 FAIL_IF(SpmTestSearch(&d, matcher) == 0);
2483 printf(
" %" PRIu32
" tests passed\n", i);
2493 UtRegisterTest(
"UtilSpmBasicSearchTest01", UtilSpmBasicSearchTest01);
2495 UtilSpmBasicSearchNocaseTest01);
2497 UtRegisterTest(
"UtilSpmBs2bmSearchTest01", UtilSpmBs2bmSearchTest01);
2499 UtilSpmBs2bmSearchNocaseTest01);
2502 UtilSpmBoyerMooreSearchTest01);
2504 UtilSpmBoyerMooreSearchNocaseTest01);
2506 UtilSpmBoyerMooreSearchNocaseTestIssue130);
2508 UtRegisterTest(
"UtilSpmBs2bmSearchTest02", UtilSpmBs2bmSearchTest02);
2510 UtilSpmBs2bmSearchNocaseTest02);
2512 UtRegisterTest(
"UtilSpmBasicSearchTest02", UtilSpmBasicSearchTest02);
2514 UtilSpmBasicSearchNocaseTest02);
2517 UtilSpmBoyerMooreSearchTest02);
2519 UtilSpmBoyerMooreSearchNocaseTest02);
2522 UtRegisterTest(
"UtilSpmSearchOffsetsTest01", UtilSpmSearchOffsetsTest01);
2524 UtilSpmSearchOffsetsNocaseTest01);
2530 #ifdef ENABLE_SEARCH_STATS
2532 UtRegisterTest(
"UtilSpmSearchStatsTest01", UtilSpmSearchStatsTest01);
2533 UtRegisterTest(
"UtilSpmSearchStatsTest02", UtilSpmSearchStatsTest02);
2534 UtRegisterTest(
"UtilSpmSearchStatsTest03", UtilSpmSearchStatsTest03);
2537 UtilSpmNocaseSearchStatsTest01);
2539 UtilSpmNocaseSearchStatsTest02);
2541 UtilSpmNocaseSearchStatsTest03);
2544 UtRegisterTest(
"UtilSpmSearchStatsTest04", UtilSpmSearchStatsTest04);
2545 UtRegisterTest(
"UtilSpmSearchStatsTest05", UtilSpmSearchStatsTest05);
2546 UtRegisterTest(
"UtilSpmSearchStatsTest06", UtilSpmSearchStatsTest06);
2547 UtRegisterTest(
"UtilSpmSearchStatsTest07", UtilSpmSearchStatsTest07);
2550 UtilSpmNocaseSearchStatsTest04);
2552 UtilSpmNocaseSearchStatsTest05);
2554 UtilSpmNocaseSearchStatsTest06);
2556 UtilSpmNocaseSearchStatsTest07);