58 #ifdef BUILD_HYPERSCAN
72 if ((
SCConfGet(
"spm-algo", &spm_algo)) == 1) {
73 if (spm_algo != NULL) {
74 if (strcmp(
"auto", spm_algo) == 0) {
87 #ifndef BUILD_HYPERSCAN
88 if ((spm_algo != NULL) && (strcmp(spm_algo,
"hs") == 0)) {
89 FatalError(
"Hyperscan (hs) support for spm-algo is "
90 "not compiled into Suricata.");
94 if ((spm_algo != NULL) && (strcmp(spm_algo,
"mm") == 0)) {
95 FatalError(
"Memmem (mm) support for spm-algo is "
96 "not compiled into Suricata.");
100 "in the yaml conf file: \"%s\"",
108 #if defined(BUILD_HYPERSCAN)
109 #ifdef HAVE_HS_VALID_PLATFORM
112 if (hs_valid_platform() != HS_SUCCESS) {
113 SCLogInfo(
"SSSE3 support not detected, disabling Hyperscan for "
123 #elif defined(HAVE_MEMMEM)
137 #ifdef BUILD_HYPERSCAN
138 #ifdef HAVE_HS_VALID_PLATFORM
139 if (hs_valid_platform() == HS_SUCCESS) {
156 if (global_thread_ctx == NULL) {
159 uint8_t matcher = global_thread_ctx->
matcher;
165 if (global_thread_ctx == NULL) {
168 uint8_t matcher = global_thread_ctx->
matcher;
175 if (thread_ctx == NULL) {
178 uint8_t matcher = thread_ctx->
matcher;
186 BUG_ON(global_thread_ctx == NULL);
187 uint8_t matcher = global_thread_ctx->
matcher;
198 uint8_t matcher =
ctx->matcher;
204 const uint8_t *haystack, uint32_t haystack_len)
206 uint8_t matcher =
ctx->matcher;
225 const uint8_t *needle, uint16_t needlelen)
230 return Bs2Bm(text, textlen, needle, needlelen, badchars);
243 const uint8_t *needle, uint16_t needlelen)
247 uint8_t *ret =
BoyerMoore(needle, needlelen, text, textlen, bm_ctx);
263 uint8_t *needle, uint16_t needlelen)
287 static uint8_t *BasicSearchWrapper(uint8_t *text, uint8_t *needle,
int times)
289 uint32_t textlen = strlen((
char *)text);
290 uint16_t needlelen = (uint16_t)strlen((
char *)needle);
299 for (i = 0; i < times; i++) {
300 ret =
BasicSearch(text, textlen, needle, needlelen);
307 static uint8_t *BasicSearchNocaseWrapper(uint8_t *text, uint8_t *needle,
int times)
309 uint32_t textlen = strlen((
char *)text);
310 uint16_t needlelen = (uint16_t)strlen((
char *)needle);
317 for (i = 0; i < times; i++) {
324 static uint8_t *Bs2bmWrapper(uint8_t *text, uint8_t *needle,
int times)
326 uint32_t textlen = strlen((
char *)text);
327 uint16_t needlelen = (uint16_t)strlen((
char *)needle);
337 for (i = 0; i < times; i++) {
338 ret =
Bs2Bm(text, textlen, needle, needlelen, badchars);
344 static uint8_t *Bs2bmNocaseWrapper(uint8_t *text, uint8_t *needle,
int times)
346 uint32_t textlen = strlen((
char *)text);
347 uint16_t needlelen = (uint16_t)strlen((
char *)needle);
357 for (i = 0; i < times; i++) {
358 ret =
Bs2BmNocase(text, textlen, needle, needlelen, badchars);
364 static uint8_t *BoyerMooreWrapper(uint8_t *text, uint8_t *needle,
int times)
366 uint32_t textlen = strlen((
char *)text);
367 uint16_t needlelen = (uint16_t)strlen((
char *)needle);
376 for (i = 0; i < times; i++) {
377 ret =
BoyerMoore(needle, needlelen, text, textlen, bm_ctx);
384 static uint8_t *BoyerMooreNocaseWrapper(uint8_t *text, uint8_t *in_needle,
int times)
386 uint32_t textlen = strlen((
char *)text);
387 uint16_t needlelen = (uint16_t)strlen((
char *)in_needle);
390 uint8_t *needle =
SCMalloc(needlelen);
393 memcpy(needle, in_needle, needlelen);
402 for (i = 0; i < times; i++) {
412 #ifdef ENABLE_SEARCH_STATS
414 #define STATS_TIMES 1000000
423 static uint8_t *BasicSearchCtxWrapper(uint8_t *text, uint8_t *needle,
int times)
425 uint32_t textlen = strlen((
char *)text);
426 uint16_t needlelen = strlen((
char *)needle);
433 for (i = 0; i < times; i++) {
435 ret =
BasicSearch(text, textlen, needle, needlelen);
441 static uint8_t *BasicSearchNocaseCtxWrapper(uint8_t *text, uint8_t *needle,
int times)
443 uint32_t textlen = strlen((
char *)text);
444 uint16_t needlelen = strlen((
char *)needle);
451 for (i = 0; i < times; i++) {
459 static uint8_t *Bs2bmCtxWrapper(uint8_t *text, uint8_t *needle,
int times)
461 uint32_t textlen = strlen((
char *)text);
462 uint16_t needlelen = strlen((
char *)needle);
471 for (i = 0; i < times; i++) {
474 ret =
Bs2Bm(text, textlen, needle, needlelen, badchars);
480 static uint8_t *Bs2bmNocaseCtxWrapper(uint8_t *text, uint8_t *needle,
int times)
482 uint32_t textlen = strlen((
char *)text);
483 uint16_t needlelen = strlen((
char *)needle);
492 for (i = 0; i < times; i++) {
495 ret =
Bs2BmNocase(text, textlen, needle, needlelen, badchars);
501 static uint8_t *BoyerMooreCtxWrapper(uint8_t *text, uint8_t *needle,
int times)
503 uint32_t textlen = strlen((
char *)text);
504 uint16_t needlelen = strlen((
char *)needle);
513 for (i = 0; i < times; i++) {
515 ret =
BoyerMoore(needle, needlelen, text, textlen, bm_ctx);
523 static uint8_t *RawCtxWrapper(uint8_t *text, uint8_t *needle,
int times)
525 uint32_t textlen = strlen((
char *)text);
526 uint16_t needlelen = strlen((
char *)needle);
533 for (i = 0; i < times; i++) {
534 ret =
SpmSearch(text, textlen, needle, needlelen);
540 static uint8_t *BoyerMooreNocaseCtxWrapper(uint8_t *text, uint8_t *in_needle,
int times)
542 uint32_t textlen = strlen((
char *)text);
543 uint16_t needlelen = strlen((
char *)in_needle);
546 uint8_t *needle =
SCMalloc(needlelen);
549 memcpy(needle, in_needle, needlelen);
558 for (i = 0; i < times; i++) {
572 static int UtilSpmBasicSearchTest01(
void)
574 uint8_t *needle = (uint8_t *)
"oPqRsT";
575 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
576 uint8_t *found = BasicSearchWrapper(text, needle, 1);
585 static int UtilSpmBasicSearchNocaseTest01(
void)
587 uint8_t *needle = (uint8_t *)
"OpQrSt";
588 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
589 uint8_t *found = BasicSearchNocaseWrapper(text, needle, 1);
598 static int UtilSpmBs2bmSearchTest01(
void)
600 uint8_t *needle = (uint8_t *)
"oPqRsT";
601 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
602 uint8_t *found = Bs2bmWrapper(text, needle, 1);
611 static int UtilSpmBs2bmSearchNocaseTest01(
void)
613 uint8_t *needle = (uint8_t *)
"OpQrSt";
614 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
615 uint8_t *found = Bs2bmNocaseWrapper(text, needle, 1);
624 static int UtilSpmBoyerMooreSearchTest01(
void)
626 uint8_t *needle = (uint8_t *)
"oPqRsT";
627 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
628 uint8_t *found = BoyerMooreWrapper(text, needle, 1);
637 static int UtilSpmBoyerMooreSearchNocaseTest01(
void)
639 uint8_t *needle = (uint8_t *)
"OpQrSt";
640 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
641 uint8_t *found = BoyerMooreNocaseWrapper(text, needle, 1);
651 static int UtilSpmBoyerMooreSearchNocaseTestIssue130(
void)
653 uint8_t *needle = (uint8_t *)
"WWW-Authenticate: ";
654 uint8_t *text = (uint8_t *)
"Date: Mon, 23 Feb 2009 13:31:49 GMT"
656 "Www-authenticate: Basic realm=\"Authentification user password\"\r\n"
657 "Vary: accept-language,accept-charset\r\n"
658 "Accept-ranges: bytes\r\n"
659 "Connection: close\r\n"
660 "Content-type: text/html; charset=iso-8859-1\r\n"
661 "Content-language: fr\r\n"
662 "Expires: Mon, 23 Feb 2009 13:31:49 GMT\r\n\r\n";
663 uint8_t *found = BoyerMooreNocaseWrapper(text, needle, 1);
670 static int UtilSpmBasicSearchTest02(
void)
672 uint8_t *needle = (uint8_t *)
"oPQRsT";
673 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
674 uint8_t *found = BasicSearchWrapper(text, needle, 1);
680 static int UtilSpmBasicSearchNocaseTest02(
void)
682 uint8_t *needle = (uint8_t *)
"OpZrSt";
683 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
684 uint8_t *found = BasicSearchNocaseWrapper(text, needle, 1);
690 static int UtilSpmBs2bmSearchTest02(
void)
692 uint8_t *needle = (uint8_t *)
"oPQRsT";
693 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
694 uint8_t *found = Bs2bmWrapper(text, needle, 1);
700 static int UtilSpmBs2bmSearchNocaseTest02(
void)
702 uint8_t *needle = (uint8_t *)
"OpZrSt";
703 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
704 uint8_t *found = Bs2bmNocaseWrapper(text, needle, 1);
710 static int UtilSpmBoyerMooreSearchTest02(
void)
712 uint8_t *needle = (uint8_t *)
"oPQRsT";
713 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
714 uint8_t *found = BoyerMooreWrapper(text, needle, 1);
720 static int UtilSpmBoyerMooreSearchNocaseTest02(
void)
722 uint8_t *needle = (uint8_t *)
"OpZrSt";
723 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
724 uint8_t *found = BoyerMooreNocaseWrapper(text, needle, 1);
733 static int UtilSpmSearchOffsetsTest01(
void)
735 const char *text[26][27];
736 text[0][0]=
"azzzzzzzzzzzzzzzzzzzzzzzzzz";
737 text[0][1]=
"zazzzzzzzzzzzzzzzzzzzzzzzzz";
738 text[0][2]=
"zzazzzzzzzzzzzzzzzzzzzzzzzz";
739 text[0][3]=
"zzzazzzzzzzzzzzzzzzzzzzzzzz";
740 text[0][4]=
"zzzzazzzzzzzzzzzzzzzzzzzzzz";
741 text[0][5]=
"zzzzzazzzzzzzzzzzzzzzzzzzzz";
742 text[0][6]=
"zzzzzzazzzzzzzzzzzzzzzzzzzz";
743 text[0][7]=
"zzzzzzzazzzzzzzzzzzzzzzzzzz";
744 text[0][8]=
"zzzzzzzzazzzzzzzzzzzzzzzzzz";
745 text[0][9]=
"zzzzzzzzzazzzzzzzzzzzzzzzzz";
746 text[0][10]=
"zzzzzzzzzzazzzzzzzzzzzzzzzz";
747 text[0][11]=
"zzzzzzzzzzzazzzzzzzzzzzzzzz";
748 text[0][12]=
"zzzzzzzzzzzzazzzzzzzzzzzzzz";
749 text[0][13]=
"zzzzzzzzzzzzzazzzzzzzzzzzzz";
750 text[0][14]=
"zzzzzzzzzzzzzzazzzzzzzzzzzz";
751 text[0][15]=
"zzzzzzzzzzzzzzzazzzzzzzzzzz";
752 text[0][16]=
"zzzzzzzzzzzzzzzzazzzzzzzzzz";
753 text[0][17]=
"zzzzzzzzzzzzzzzzzazzzzzzzzz";
754 text[0][18]=
"zzzzzzzzzzzzzzzzzzazzzzzzzz";
755 text[0][19]=
"zzzzzzzzzzzzzzzzzzzazzzzzzz";
756 text[0][20]=
"zzzzzzzzzzzzzzzzzzzzazzzzzz";
757 text[0][21]=
"zzzzzzzzzzzzzzzzzzzzzazzzzz";
758 text[0][22]=
"zzzzzzzzzzzzzzzzzzzzzzazzzz";
759 text[0][23]=
"zzzzzzzzzzzzzzzzzzzzzzzazzz";
760 text[0][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzazz";
761 text[0][25]=
"zzzzzzzzzzzzzzzzzzzzzzzzzaz";
762 text[0][26]=
"zzzzzzzzzzzzzzzzzzzzzzzzzza";
763 text[1][0]=
"aBzzzzzzzzzzzzzzzzzzzzzzzzz";
764 text[1][1]=
"zaBzzzzzzzzzzzzzzzzzzzzzzzz";
765 text[1][2]=
"zzaBzzzzzzzzzzzzzzzzzzzzzzz";
766 text[1][3]=
"zzzaBzzzzzzzzzzzzzzzzzzzzzz";
767 text[1][4]=
"zzzzaBzzzzzzzzzzzzzzzzzzzzz";
768 text[1][5]=
"zzzzzaBzzzzzzzzzzzzzzzzzzzz";
769 text[1][6]=
"zzzzzzaBzzzzzzzzzzzzzzzzzzz";
770 text[1][7]=
"zzzzzzzaBzzzzzzzzzzzzzzzzzz";
771 text[1][8]=
"zzzzzzzzaBzzzzzzzzzzzzzzzzz";
772 text[1][9]=
"zzzzzzzzzaBzzzzzzzzzzzzzzzz";
773 text[1][10]=
"zzzzzzzzzzaBzzzzzzzzzzzzzzz";
774 text[1][11]=
"zzzzzzzzzzzaBzzzzzzzzzzzzzz";
775 text[1][12]=
"zzzzzzzzzzzzaBzzzzzzzzzzzzz";
776 text[1][13]=
"zzzzzzzzzzzzzaBzzzzzzzzzzzz";
777 text[1][14]=
"zzzzzzzzzzzzzzaBzzzzzzzzzzz";
778 text[1][15]=
"zzzzzzzzzzzzzzzaBzzzzzzzzzz";
779 text[1][16]=
"zzzzzzzzzzzzzzzzaBzzzzzzzzz";
780 text[1][17]=
"zzzzzzzzzzzzzzzzzaBzzzzzzzz";
781 text[1][18]=
"zzzzzzzzzzzzzzzzzzaBzzzzzzz";
782 text[1][19]=
"zzzzzzzzzzzzzzzzzzzaBzzzzzz";
783 text[1][20]=
"zzzzzzzzzzzzzzzzzzzzaBzzzzz";
784 text[1][21]=
"zzzzzzzzzzzzzzzzzzzzzaBzzzz";
785 text[1][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBzzz";
786 text[1][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBzz";
787 text[1][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzaBz";
788 text[1][25]=
"zzzzzzzzzzzzzzzzzzzzzzzzzaB";
789 text[2][0]=
"aBczzzzzzzzzzzzzzzzzzzzzzzz";
790 text[2][1]=
"zaBczzzzzzzzzzzzzzzzzzzzzzz";
791 text[2][2]=
"zzaBczzzzzzzzzzzzzzzzzzzzzz";
792 text[2][3]=
"zzzaBczzzzzzzzzzzzzzzzzzzzz";
793 text[2][4]=
"zzzzaBczzzzzzzzzzzzzzzzzzzz";
794 text[2][5]=
"zzzzzaBczzzzzzzzzzzzzzzzzzz";
795 text[2][6]=
"zzzzzzaBczzzzzzzzzzzzzzzzzz";
796 text[2][7]=
"zzzzzzzaBczzzzzzzzzzzzzzzzz";
797 text[2][8]=
"zzzzzzzzaBczzzzzzzzzzzzzzzz";
798 text[2][9]=
"zzzzzzzzzaBczzzzzzzzzzzzzzz";
799 text[2][10]=
"zzzzzzzzzzaBczzzzzzzzzzzzzz";
800 text[2][11]=
"zzzzzzzzzzzaBczzzzzzzzzzzzz";
801 text[2][12]=
"zzzzzzzzzzzzaBczzzzzzzzzzzz";
802 text[2][13]=
"zzzzzzzzzzzzzaBczzzzzzzzzzz";
803 text[2][14]=
"zzzzzzzzzzzzzzaBczzzzzzzzzz";
804 text[2][15]=
"zzzzzzzzzzzzzzzaBczzzzzzzzz";
805 text[2][16]=
"zzzzzzzzzzzzzzzzaBczzzzzzzz";
806 text[2][17]=
"zzzzzzzzzzzzzzzzzaBczzzzzzz";
807 text[2][18]=
"zzzzzzzzzzzzzzzzzzaBczzzzzz";
808 text[2][19]=
"zzzzzzzzzzzzzzzzzzzaBczzzzz";
809 text[2][20]=
"zzzzzzzzzzzzzzzzzzzzaBczzzz";
810 text[2][21]=
"zzzzzzzzzzzzzzzzzzzzzaBczzz";
811 text[2][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBczz";
812 text[2][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBcz";
813 text[2][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzaBc";
814 text[3][0]=
"aBcDzzzzzzzzzzzzzzzzzzzzzzz";
815 text[3][1]=
"zaBcDzzzzzzzzzzzzzzzzzzzzzz";
816 text[3][2]=
"zzaBcDzzzzzzzzzzzzzzzzzzzzz";
817 text[3][3]=
"zzzaBcDzzzzzzzzzzzzzzzzzzzz";
818 text[3][4]=
"zzzzaBcDzzzzzzzzzzzzzzzzzzz";
819 text[3][5]=
"zzzzzaBcDzzzzzzzzzzzzzzzzzz";
820 text[3][6]=
"zzzzzzaBcDzzzzzzzzzzzzzzzzz";
821 text[3][7]=
"zzzzzzzaBcDzzzzzzzzzzzzzzzz";
822 text[3][8]=
"zzzzzzzzaBcDzzzzzzzzzzzzzzz";
823 text[3][9]=
"zzzzzzzzzaBcDzzzzzzzzzzzzzz";
824 text[3][10]=
"zzzzzzzzzzaBcDzzzzzzzzzzzzz";
825 text[3][11]=
"zzzzzzzzzzzaBcDzzzzzzzzzzzz";
826 text[3][12]=
"zzzzzzzzzzzzaBcDzzzzzzzzzzz";
827 text[3][13]=
"zzzzzzzzzzzzzaBcDzzzzzzzzzz";
828 text[3][14]=
"zzzzzzzzzzzzzzaBcDzzzzzzzzz";
829 text[3][15]=
"zzzzzzzzzzzzzzzaBcDzzzzzzzz";
830 text[3][16]=
"zzzzzzzzzzzzzzzzaBcDzzzzzzz";
831 text[3][17]=
"zzzzzzzzzzzzzzzzzaBcDzzzzzz";
832 text[3][18]=
"zzzzzzzzzzzzzzzzzzaBcDzzzzz";
833 text[3][19]=
"zzzzzzzzzzzzzzzzzzzaBcDzzzz";
834 text[3][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDzzz";
835 text[3][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDzz";
836 text[3][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBcDz";
837 text[3][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBcD";
838 text[4][0]=
"aBcDezzzzzzzzzzzzzzzzzzzzzz";
839 text[4][1]=
"zaBcDezzzzzzzzzzzzzzzzzzzzz";
840 text[4][2]=
"zzaBcDezzzzzzzzzzzzzzzzzzzz";
841 text[4][3]=
"zzzaBcDezzzzzzzzzzzzzzzzzzz";
842 text[4][4]=
"zzzzaBcDezzzzzzzzzzzzzzzzzz";
843 text[4][5]=
"zzzzzaBcDezzzzzzzzzzzzzzzzz";
844 text[4][6]=
"zzzzzzaBcDezzzzzzzzzzzzzzzz";
845 text[4][7]=
"zzzzzzzaBcDezzzzzzzzzzzzzzz";
846 text[4][8]=
"zzzzzzzzaBcDezzzzzzzzzzzzzz";
847 text[4][9]=
"zzzzzzzzzaBcDezzzzzzzzzzzzz";
848 text[4][10]=
"zzzzzzzzzzaBcDezzzzzzzzzzzz";
849 text[4][11]=
"zzzzzzzzzzzaBcDezzzzzzzzzzz";
850 text[4][12]=
"zzzzzzzzzzzzaBcDezzzzzzzzzz";
851 text[4][13]=
"zzzzzzzzzzzzzaBcDezzzzzzzzz";
852 text[4][14]=
"zzzzzzzzzzzzzzaBcDezzzzzzzz";
853 text[4][15]=
"zzzzzzzzzzzzzzzaBcDezzzzzzz";
854 text[4][16]=
"zzzzzzzzzzzzzzzzaBcDezzzzzz";
855 text[4][17]=
"zzzzzzzzzzzzzzzzzaBcDezzzzz";
856 text[4][18]=
"zzzzzzzzzzzzzzzzzzaBcDezzzz";
857 text[4][19]=
"zzzzzzzzzzzzzzzzzzzaBcDezzz";
858 text[4][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDezz";
859 text[4][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDez";
860 text[4][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBcDe";
861 text[5][0]=
"aBcDeFzzzzzzzzzzzzzzzzzzzzz";
862 text[5][1]=
"zaBcDeFzzzzzzzzzzzzzzzzzzzz";
863 text[5][2]=
"zzaBcDeFzzzzzzzzzzzzzzzzzzz";
864 text[5][3]=
"zzzaBcDeFzzzzzzzzzzzzzzzzzz";
865 text[5][4]=
"zzzzaBcDeFzzzzzzzzzzzzzzzzz";
866 text[5][5]=
"zzzzzaBcDeFzzzzzzzzzzzzzzzz";
867 text[5][6]=
"zzzzzzaBcDeFzzzzzzzzzzzzzzz";
868 text[5][7]=
"zzzzzzzaBcDeFzzzzzzzzzzzzzz";
869 text[5][8]=
"zzzzzzzzaBcDeFzzzzzzzzzzzzz";
870 text[5][9]=
"zzzzzzzzzaBcDeFzzzzzzzzzzzz";
871 text[5][10]=
"zzzzzzzzzzaBcDeFzzzzzzzzzzz";
872 text[5][11]=
"zzzzzzzzzzzaBcDeFzzzzzzzzzz";
873 text[5][12]=
"zzzzzzzzzzzzaBcDeFzzzzzzzzz";
874 text[5][13]=
"zzzzzzzzzzzzzaBcDeFzzzzzzzz";
875 text[5][14]=
"zzzzzzzzzzzzzzaBcDeFzzzzzzz";
876 text[5][15]=
"zzzzzzzzzzzzzzzaBcDeFzzzzzz";
877 text[5][16]=
"zzzzzzzzzzzzzzzzaBcDeFzzzzz";
878 text[5][17]=
"zzzzzzzzzzzzzzzzzaBcDeFzzzz";
879 text[5][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFzzz";
880 text[5][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFzz";
881 text[5][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFz";
882 text[5][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDeF";
883 text[6][0]=
"aBcDeFgzzzzzzzzzzzzzzzzzzzz";
884 text[6][1]=
"zaBcDeFgzzzzzzzzzzzzzzzzzzz";
885 text[6][2]=
"zzaBcDeFgzzzzzzzzzzzzzzzzzz";
886 text[6][3]=
"zzzaBcDeFgzzzzzzzzzzzzzzzzz";
887 text[6][4]=
"zzzzaBcDeFgzzzzzzzzzzzzzzzz";
888 text[6][5]=
"zzzzzaBcDeFgzzzzzzzzzzzzzzz";
889 text[6][6]=
"zzzzzzaBcDeFgzzzzzzzzzzzzzz";
890 text[6][7]=
"zzzzzzzaBcDeFgzzzzzzzzzzzzz";
891 text[6][8]=
"zzzzzzzzaBcDeFgzzzzzzzzzzzz";
892 text[6][9]=
"zzzzzzzzzaBcDeFgzzzzzzzzzzz";
893 text[6][10]=
"zzzzzzzzzzaBcDeFgzzzzzzzzzz";
894 text[6][11]=
"zzzzzzzzzzzaBcDeFgzzzzzzzzz";
895 text[6][12]=
"zzzzzzzzzzzzaBcDeFgzzzzzzzz";
896 text[6][13]=
"zzzzzzzzzzzzzaBcDeFgzzzzzzz";
897 text[6][14]=
"zzzzzzzzzzzzzzaBcDeFgzzzzzz";
898 text[6][15]=
"zzzzzzzzzzzzzzzaBcDeFgzzzzz";
899 text[6][16]=
"zzzzzzzzzzzzzzzzaBcDeFgzzzz";
900 text[6][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgzzz";
901 text[6][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgzz";
902 text[6][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFgz";
903 text[6][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
904 text[7][0]=
"aBcDeFgHzzzzzzzzzzzzzzzzzzz";
905 text[7][1]=
"zaBcDeFgHzzzzzzzzzzzzzzzzzz";
906 text[7][2]=
"zzaBcDeFgHzzzzzzzzzzzzzzzzz";
907 text[7][3]=
"zzzaBcDeFgHzzzzzzzzzzzzzzzz";
908 text[7][4]=
"zzzzaBcDeFgHzzzzzzzzzzzzzzz";
909 text[7][5]=
"zzzzzaBcDeFgHzzzzzzzzzzzzzz";
910 text[7][6]=
"zzzzzzaBcDeFgHzzzzzzzzzzzzz";
911 text[7][7]=
"zzzzzzzaBcDeFgHzzzzzzzzzzzz";
912 text[7][8]=
"zzzzzzzzaBcDeFgHzzzzzzzzzzz";
913 text[7][9]=
"zzzzzzzzzaBcDeFgHzzzzzzzzzz";
914 text[7][10]=
"zzzzzzzzzzaBcDeFgHzzzzzzzzz";
915 text[7][11]=
"zzzzzzzzzzzaBcDeFgHzzzzzzzz";
916 text[7][12]=
"zzzzzzzzzzzzaBcDeFgHzzzzzzz";
917 text[7][13]=
"zzzzzzzzzzzzzaBcDeFgHzzzzzz";
918 text[7][14]=
"zzzzzzzzzzzzzzaBcDeFgHzzzzz";
919 text[7][15]=
"zzzzzzzzzzzzzzzaBcDeFgHzzzz";
920 text[7][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHzzz";
921 text[7][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHzz";
922 text[7][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgHz";
923 text[7][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFgH";
924 text[8][0]=
"aBcDeFgHizzzzzzzzzzzzzzzzzz";
925 text[8][1]=
"zaBcDeFgHizzzzzzzzzzzzzzzzz";
926 text[8][2]=
"zzaBcDeFgHizzzzzzzzzzzzzzzz";
927 text[8][3]=
"zzzaBcDeFgHizzzzzzzzzzzzzzz";
928 text[8][4]=
"zzzzaBcDeFgHizzzzzzzzzzzzzz";
929 text[8][5]=
"zzzzzaBcDeFgHizzzzzzzzzzzzz";
930 text[8][6]=
"zzzzzzaBcDeFgHizzzzzzzzzzzz";
931 text[8][7]=
"zzzzzzzaBcDeFgHizzzzzzzzzzz";
932 text[8][8]=
"zzzzzzzzaBcDeFgHizzzzzzzzzz";
933 text[8][9]=
"zzzzzzzzzaBcDeFgHizzzzzzzzz";
934 text[8][10]=
"zzzzzzzzzzaBcDeFgHizzzzzzzz";
935 text[8][11]=
"zzzzzzzzzzzaBcDeFgHizzzzzzz";
936 text[8][12]=
"zzzzzzzzzzzzaBcDeFgHizzzzzz";
937 text[8][13]=
"zzzzzzzzzzzzzaBcDeFgHizzzzz";
938 text[8][14]=
"zzzzzzzzzzzzzzaBcDeFgHizzzz";
939 text[8][15]=
"zzzzzzzzzzzzzzzaBcDeFgHizzz";
940 text[8][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHizz";
941 text[8][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHiz";
942 text[8][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgHi";
943 text[9][0]=
"aBcDeFgHiJzzzzzzzzzzzzzzzzz";
944 text[9][1]=
"zaBcDeFgHiJzzzzzzzzzzzzzzzz";
945 text[9][2]=
"zzaBcDeFgHiJzzzzzzzzzzzzzzz";
946 text[9][3]=
"zzzaBcDeFgHiJzzzzzzzzzzzzzz";
947 text[9][4]=
"zzzzaBcDeFgHiJzzzzzzzzzzzzz";
948 text[9][5]=
"zzzzzaBcDeFgHiJzzzzzzzzzzzz";
949 text[9][6]=
"zzzzzzaBcDeFgHiJzzzzzzzzzzz";
950 text[9][7]=
"zzzzzzzaBcDeFgHiJzzzzzzzzzz";
951 text[9][8]=
"zzzzzzzzaBcDeFgHiJzzzzzzzzz";
952 text[9][9]=
"zzzzzzzzzaBcDeFgHiJzzzzzzzz";
953 text[9][10]=
"zzzzzzzzzzaBcDeFgHiJzzzzzzz";
954 text[9][11]=
"zzzzzzzzzzzaBcDeFgHiJzzzzzz";
955 text[9][12]=
"zzzzzzzzzzzzaBcDeFgHiJzzzzz";
956 text[9][13]=
"zzzzzzzzzzzzzaBcDeFgHiJzzzz";
957 text[9][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJzzz";
958 text[9][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJzz";
959 text[9][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHiJz";
960 text[9][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHiJ";
961 text[10][0]=
"aBcDeFgHiJkzzzzzzzzzzzzzzzz";
962 text[10][1]=
"zaBcDeFgHiJkzzzzzzzzzzzzzzz";
963 text[10][2]=
"zzaBcDeFgHiJkzzzzzzzzzzzzzz";
964 text[10][3]=
"zzzaBcDeFgHiJkzzzzzzzzzzzzz";
965 text[10][4]=
"zzzzaBcDeFgHiJkzzzzzzzzzzzz";
966 text[10][5]=
"zzzzzaBcDeFgHiJkzzzzzzzzzzz";
967 text[10][6]=
"zzzzzzaBcDeFgHiJkzzzzzzzzzz";
968 text[10][7]=
"zzzzzzzaBcDeFgHiJkzzzzzzzzz";
969 text[10][8]=
"zzzzzzzzaBcDeFgHiJkzzzzzzzz";
970 text[10][9]=
"zzzzzzzzzaBcDeFgHiJkzzzzzzz";
971 text[10][10]=
"zzzzzzzzzzaBcDeFgHiJkzzzzzz";
972 text[10][11]=
"zzzzzzzzzzzaBcDeFgHiJkzzzzz";
973 text[10][12]=
"zzzzzzzzzzzzaBcDeFgHiJkzzzz";
974 text[10][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkzzz";
975 text[10][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkzz";
976 text[10][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJkz";
977 text[10][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHiJk";
978 text[11][0]=
"aBcDeFgHiJkLzzzzzzzzzzzzzzz";
979 text[11][1]=
"zaBcDeFgHiJkLzzzzzzzzzzzzzz";
980 text[11][2]=
"zzaBcDeFgHiJkLzzzzzzzzzzzzz";
981 text[11][3]=
"zzzaBcDeFgHiJkLzzzzzzzzzzzz";
982 text[11][4]=
"zzzzaBcDeFgHiJkLzzzzzzzzzzz";
983 text[11][5]=
"zzzzzaBcDeFgHiJkLzzzzzzzzzz";
984 text[11][6]=
"zzzzzzaBcDeFgHiJkLzzzzzzzzz";
985 text[11][7]=
"zzzzzzzaBcDeFgHiJkLzzzzzzzz";
986 text[11][8]=
"zzzzzzzzaBcDeFgHiJkLzzzzzzz";
987 text[11][9]=
"zzzzzzzzzaBcDeFgHiJkLzzzzzz";
988 text[11][10]=
"zzzzzzzzzzaBcDeFgHiJkLzzzzz";
989 text[11][11]=
"zzzzzzzzzzzaBcDeFgHiJkLzzzz";
990 text[11][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLzzz";
991 text[11][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLzz";
992 text[11][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkLz";
993 text[11][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJkL";
994 text[12][0]=
"aBcDeFgHiJkLmzzzzzzzzzzzzzz";
995 text[12][1]=
"zaBcDeFgHiJkLmzzzzzzzzzzzzz";
996 text[12][2]=
"zzaBcDeFgHiJkLmzzzzzzzzzzzz";
997 text[12][3]=
"zzzaBcDeFgHiJkLmzzzzzzzzzzz";
998 text[12][4]=
"zzzzaBcDeFgHiJkLmzzzzzzzzzz";
999 text[12][5]=
"zzzzzaBcDeFgHiJkLmzzzzzzzzz";
1000 text[12][6]=
"zzzzzzaBcDeFgHiJkLmzzzzzzzz";
1001 text[12][7]=
"zzzzzzzaBcDeFgHiJkLmzzzzzzz";
1002 text[12][8]=
"zzzzzzzzaBcDeFgHiJkLmzzzzzz";
1003 text[12][9]=
"zzzzzzzzzaBcDeFgHiJkLmzzzzz";
1004 text[12][10]=
"zzzzzzzzzzaBcDeFgHiJkLmzzzz";
1005 text[12][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmzzz";
1006 text[12][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmzz";
1007 text[12][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLmz";
1008 text[12][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkLm";
1009 text[13][0]=
"aBcDeFgHiJkLmNzzzzzzzzzzzzz";
1010 text[13][1]=
"zaBcDeFgHiJkLmNzzzzzzzzzzzz";
1011 text[13][2]=
"zzaBcDeFgHiJkLmNzzzzzzzzzzz";
1012 text[13][3]=
"zzzaBcDeFgHiJkLmNzzzzzzzzzz";
1013 text[13][4]=
"zzzzaBcDeFgHiJkLmNzzzzzzzzz";
1014 text[13][5]=
"zzzzzaBcDeFgHiJkLmNzzzzzzzz";
1015 text[13][6]=
"zzzzzzaBcDeFgHiJkLmNzzzzzzz";
1016 text[13][7]=
"zzzzzzzaBcDeFgHiJkLmNzzzzzz";
1017 text[13][8]=
"zzzzzzzzaBcDeFgHiJkLmNzzzzz";
1018 text[13][9]=
"zzzzzzzzzaBcDeFgHiJkLmNzzzz";
1019 text[13][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNzzz";
1020 text[13][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNzz";
1021 text[13][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmNz";
1022 text[13][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLmN";
1023 text[14][0]=
"aBcDeFgHiJkLmNozzzzzzzzzzzz";
1024 text[14][1]=
"zaBcDeFgHiJkLmNozzzzzzzzzzz";
1025 text[14][2]=
"zzaBcDeFgHiJkLmNozzzzzzzzzz";
1026 text[14][3]=
"zzzaBcDeFgHiJkLmNozzzzzzzzz";
1027 text[14][4]=
"zzzzaBcDeFgHiJkLmNozzzzzzzz";
1028 text[14][5]=
"zzzzzaBcDeFgHiJkLmNozzzzzzz";
1029 text[14][6]=
"zzzzzzaBcDeFgHiJkLmNozzzzzz";
1030 text[14][7]=
"zzzzzzzaBcDeFgHiJkLmNozzzzz";
1031 text[14][8]=
"zzzzzzzzaBcDeFgHiJkLmNozzzz";
1032 text[14][9]=
"zzzzzzzzzaBcDeFgHiJkLmNozzz";
1033 text[14][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNozz";
1034 text[14][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNoz";
1035 text[14][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmNo";
1036 text[15][0]=
"aBcDeFgHiJkLmNoPzzzzzzzzzzz";
1037 text[15][1]=
"zaBcDeFgHiJkLmNoPzzzzzzzzzz";
1038 text[15][2]=
"zzaBcDeFgHiJkLmNoPzzzzzzzzz";
1039 text[15][3]=
"zzzaBcDeFgHiJkLmNoPzzzzzzzz";
1040 text[15][4]=
"zzzzaBcDeFgHiJkLmNoPzzzzzzz";
1041 text[15][5]=
"zzzzzaBcDeFgHiJkLmNoPzzzzzz";
1042 text[15][6]=
"zzzzzzaBcDeFgHiJkLmNoPzzzzz";
1043 text[15][7]=
"zzzzzzzaBcDeFgHiJkLmNoPzzzz";
1044 text[15][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPzzz";
1045 text[15][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPzz";
1046 text[15][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNoPz";
1047 text[15][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNoP";
1048 text[16][0]=
"aBcDeFgHiJkLmNoPqzzzzzzzzzz";
1049 text[16][1]=
"zaBcDeFgHiJkLmNoPqzzzzzzzzz";
1050 text[16][2]=
"zzaBcDeFgHiJkLmNoPqzzzzzzzz";
1051 text[16][3]=
"zzzaBcDeFgHiJkLmNoPqzzzzzzz";
1052 text[16][4]=
"zzzzaBcDeFgHiJkLmNoPqzzzzzz";
1053 text[16][5]=
"zzzzzaBcDeFgHiJkLmNoPqzzzzz";
1054 text[16][6]=
"zzzzzzaBcDeFgHiJkLmNoPqzzzz";
1055 text[16][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqzzz";
1056 text[16][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqzz";
1057 text[16][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPqz";
1058 text[16][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNoPq";
1059 text[17][0]=
"aBcDeFgHiJkLmNoPqRzzzzzzzzz";
1060 text[17][1]=
"zaBcDeFgHiJkLmNoPqRzzzzzzzz";
1061 text[17][2]=
"zzaBcDeFgHiJkLmNoPqRzzzzzzz";
1062 text[17][3]=
"zzzaBcDeFgHiJkLmNoPqRzzzzzz";
1063 text[17][4]=
"zzzzaBcDeFgHiJkLmNoPqRzzzzz";
1064 text[17][5]=
"zzzzzaBcDeFgHiJkLmNoPqRzzzz";
1065 text[17][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRzzz";
1066 text[17][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRzz";
1067 text[17][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqRz";
1068 text[17][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPqR";
1069 text[18][0]=
"aBcDeFgHiJkLmNoPqRszzzzzzzz";
1070 text[18][1]=
"zaBcDeFgHiJkLmNoPqRszzzzzzz";
1071 text[18][2]=
"zzaBcDeFgHiJkLmNoPqRszzzzzz";
1072 text[18][3]=
"zzzaBcDeFgHiJkLmNoPqRszzzzz";
1073 text[18][4]=
"zzzzaBcDeFgHiJkLmNoPqRszzzz";
1074 text[18][5]=
"zzzzzaBcDeFgHiJkLmNoPqRszzz";
1075 text[18][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRszz";
1076 text[18][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRsz";
1077 text[18][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqRs";
1078 text[19][0]=
"aBcDeFgHiJkLmNoPqRsTzzzzzzz";
1079 text[19][1]=
"zaBcDeFgHiJkLmNoPqRsTzzzzzz";
1080 text[19][2]=
"zzaBcDeFgHiJkLmNoPqRsTzzzzz";
1081 text[19][3]=
"zzzaBcDeFgHiJkLmNoPqRsTzzzz";
1082 text[19][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTzzz";
1083 text[19][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTzz";
1084 text[19][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRsTz";
1085 text[19][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRsT";
1086 text[20][0]=
"aBcDeFgHiJkLmNoPqRsTuzzzzzz";
1087 text[20][1]=
"zaBcDeFgHiJkLmNoPqRsTuzzzzz";
1088 text[20][2]=
"zzaBcDeFgHiJkLmNoPqRsTuzzzz";
1089 text[20][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuzzz";
1090 text[20][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuzz";
1091 text[20][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTuz";
1092 text[20][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRsTu";
1093 text[21][0]=
"aBcDeFgHiJkLmNoPqRsTuVzzzzz";
1094 text[21][1]=
"zaBcDeFgHiJkLmNoPqRsTuVzzzz";
1095 text[21][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVzzz";
1096 text[21][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVzz";
1097 text[21][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuVz";
1098 text[21][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTuV";
1099 text[22][0]=
"aBcDeFgHiJkLmNoPqRsTuVwzzzz";
1100 text[22][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwzzz";
1101 text[22][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwzz";
1102 text[22][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVwz";
1103 text[22][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuVw";
1104 text[23][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXzzz";
1105 text[23][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXzz";
1106 text[23][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwXz";
1107 text[23][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVwX";
1108 text[24][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXyzz";
1109 text[24][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXyz";
1110 text[24][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwXy";
1111 text[25][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXyZz";
1112 text[25][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXyZ";
1114 const char *needle[26];
1121 needle[6]=
"aBcDeFg";
1122 needle[7]=
"aBcDeFgH";
1123 needle[8]=
"aBcDeFgHi";
1124 needle[9]=
"aBcDeFgHiJ";
1125 needle[10]=
"aBcDeFgHiJk";
1126 needle[11]=
"aBcDeFgHiJkL";
1127 needle[12]=
"aBcDeFgHiJkLm";
1128 needle[13]=
"aBcDeFgHiJkLmN";
1129 needle[14]=
"aBcDeFgHiJkLmNo";
1130 needle[15]=
"aBcDeFgHiJkLmNoP";
1131 needle[16]=
"aBcDeFgHiJkLmNoPq";
1132 needle[17]=
"aBcDeFgHiJkLmNoPqR";
1133 needle[18]=
"aBcDeFgHiJkLmNoPqRs";
1134 needle[19]=
"aBcDeFgHiJkLmNoPqRsT";
1135 needle[20]=
"aBcDeFgHiJkLmNoPqRsTu";
1136 needle[21]=
"aBcDeFgHiJkLmNoPqRsTuV";
1137 needle[22]=
"aBcDeFgHiJkLmNoPqRsTuVw";
1138 needle[23]=
"aBcDeFgHiJkLmNoPqRsTuVwX";
1139 needle[24]=
"aBcDeFgHiJkLmNoPqRsTuVwXy";
1140 needle[25]=
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
1143 uint8_t *found = NULL;
1144 for (i = 0; i < 26; i++) {
1145 for (j = 0; j <= (26 - i); j++) {
1146 found = BasicSearchWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1148 found = Bs2bmWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1150 found = BoyerMooreWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1160 static int UtilSpmSearchOffsetsNocaseTest01(
void)
1162 const char *text[26][27];
1163 text[0][0]=
"azzzzzzzzzzzzzzzzzzzzzzzzzz";
1164 text[0][1]=
"zazzzzzzzzzzzzzzzzzzzzzzzzz";
1165 text[0][2]=
"zzazzzzzzzzzzzzzzzzzzzzzzzz";
1166 text[0][3]=
"zzzazzzzzzzzzzzzzzzzzzzzzzz";
1167 text[0][4]=
"zzzzazzzzzzzzzzzzzzzzzzzzzz";
1168 text[0][5]=
"zzzzzazzzzzzzzzzzzzzzzzzzzz";
1169 text[0][6]=
"zzzzzzazzzzzzzzzzzzzzzzzzzz";
1170 text[0][7]=
"zzzzzzzazzzzzzzzzzzzzzzzzzz";
1171 text[0][8]=
"zzzzzzzzazzzzzzzzzzzzzzzzzz";
1172 text[0][9]=
"zzzzzzzzzazzzzzzzzzzzzzzzzz";
1173 text[0][10]=
"zzzzzzzzzzazzzzzzzzzzzzzzzz";
1174 text[0][11]=
"zzzzzzzzzzzazzzzzzzzzzzzzzz";
1175 text[0][12]=
"zzzzzzzzzzzzazzzzzzzzzzzzzz";
1176 text[0][13]=
"zzzzzzzzzzzzzazzzzzzzzzzzzz";
1177 text[0][14]=
"zzzzzzzzzzzzzzazzzzzzzzzzzz";
1178 text[0][15]=
"zzzzzzzzzzzzzzzazzzzzzzzzzz";
1179 text[0][16]=
"zzzzzzzzzzzzzzzzazzzzzzzzzz";
1180 text[0][17]=
"zzzzzzzzzzzzzzzzzazzzzzzzzz";
1181 text[0][18]=
"zzzzzzzzzzzzzzzzzzazzzzzzzz";
1182 text[0][19]=
"zzzzzzzzzzzzzzzzzzzazzzzzzz";
1183 text[0][20]=
"zzzzzzzzzzzzzzzzzzzzazzzzzz";
1184 text[0][21]=
"zzzzzzzzzzzzzzzzzzzzzazzzzz";
1185 text[0][22]=
"zzzzzzzzzzzzzzzzzzzzzzazzzz";
1186 text[0][23]=
"zzzzzzzzzzzzzzzzzzzzzzzazzz";
1187 text[0][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzazz";
1188 text[0][25]=
"zzzzzzzzzzzzzzzzzzzzzzzzzaz";
1189 text[0][26]=
"zzzzzzzzzzzzzzzzzzzzzzzzzza";
1190 text[1][0]=
"aBzzzzzzzzzzzzzzzzzzzzzzzzz";
1191 text[1][1]=
"zaBzzzzzzzzzzzzzzzzzzzzzzzz";
1192 text[1][2]=
"zzaBzzzzzzzzzzzzzzzzzzzzzzz";
1193 text[1][3]=
"zzzaBzzzzzzzzzzzzzzzzzzzzzz";
1194 text[1][4]=
"zzzzaBzzzzzzzzzzzzzzzzzzzzz";
1195 text[1][5]=
"zzzzzaBzzzzzzzzzzzzzzzzzzzz";
1196 text[1][6]=
"zzzzzzaBzzzzzzzzzzzzzzzzzzz";
1197 text[1][7]=
"zzzzzzzaBzzzzzzzzzzzzzzzzzz";
1198 text[1][8]=
"zzzzzzzzaBzzzzzzzzzzzzzzzzz";
1199 text[1][9]=
"zzzzzzzzzaBzzzzzzzzzzzzzzzz";
1200 text[1][10]=
"zzzzzzzzzzaBzzzzzzzzzzzzzzz";
1201 text[1][11]=
"zzzzzzzzzzzaBzzzzzzzzzzzzzz";
1202 text[1][12]=
"zzzzzzzzzzzzaBzzzzzzzzzzzzz";
1203 text[1][13]=
"zzzzzzzzzzzzzaBzzzzzzzzzzzz";
1204 text[1][14]=
"zzzzzzzzzzzzzzaBzzzzzzzzzzz";
1205 text[1][15]=
"zzzzzzzzzzzzzzzaBzzzzzzzzzz";
1206 text[1][16]=
"zzzzzzzzzzzzzzzzaBzzzzzzzzz";
1207 text[1][17]=
"zzzzzzzzzzzzzzzzzaBzzzzzzzz";
1208 text[1][18]=
"zzzzzzzzzzzzzzzzzzaBzzzzzzz";
1209 text[1][19]=
"zzzzzzzzzzzzzzzzzzzaBzzzzzz";
1210 text[1][20]=
"zzzzzzzzzzzzzzzzzzzzaBzzzzz";
1211 text[1][21]=
"zzzzzzzzzzzzzzzzzzzzzaBzzzz";
1212 text[1][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBzzz";
1213 text[1][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBzz";
1214 text[1][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzaBz";
1215 text[1][25]=
"zzzzzzzzzzzzzzzzzzzzzzzzzaB";
1216 text[2][0]=
"aBczzzzzzzzzzzzzzzzzzzzzzzz";
1217 text[2][1]=
"zaBczzzzzzzzzzzzzzzzzzzzzzz";
1218 text[2][2]=
"zzaBczzzzzzzzzzzzzzzzzzzzzz";
1219 text[2][3]=
"zzzaBczzzzzzzzzzzzzzzzzzzzz";
1220 text[2][4]=
"zzzzaBczzzzzzzzzzzzzzzzzzzz";
1221 text[2][5]=
"zzzzzaBczzzzzzzzzzzzzzzzzzz";
1222 text[2][6]=
"zzzzzzaBczzzzzzzzzzzzzzzzzz";
1223 text[2][7]=
"zzzzzzzaBczzzzzzzzzzzzzzzzz";
1224 text[2][8]=
"zzzzzzzzaBczzzzzzzzzzzzzzzz";
1225 text[2][9]=
"zzzzzzzzzaBczzzzzzzzzzzzzzz";
1226 text[2][10]=
"zzzzzzzzzzaBczzzzzzzzzzzzzz";
1227 text[2][11]=
"zzzzzzzzzzzaBczzzzzzzzzzzzz";
1228 text[2][12]=
"zzzzzzzzzzzzaBczzzzzzzzzzzz";
1229 text[2][13]=
"zzzzzzzzzzzzzaBczzzzzzzzzzz";
1230 text[2][14]=
"zzzzzzzzzzzzzzaBczzzzzzzzzz";
1231 text[2][15]=
"zzzzzzzzzzzzzzzaBczzzzzzzzz";
1232 text[2][16]=
"zzzzzzzzzzzzzzzzaBczzzzzzzz";
1233 text[2][17]=
"zzzzzzzzzzzzzzzzzaBczzzzzzz";
1234 text[2][18]=
"zzzzzzzzzzzzzzzzzzaBczzzzzz";
1235 text[2][19]=
"zzzzzzzzzzzzzzzzzzzaBczzzzz";
1236 text[2][20]=
"zzzzzzzzzzzzzzzzzzzzaBczzzz";
1237 text[2][21]=
"zzzzzzzzzzzzzzzzzzzzzaBczzz";
1238 text[2][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBczz";
1239 text[2][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBcz";
1240 text[2][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzaBc";
1241 text[3][0]=
"aBcDzzzzzzzzzzzzzzzzzzzzzzz";
1242 text[3][1]=
"zaBcDzzzzzzzzzzzzzzzzzzzzzz";
1243 text[3][2]=
"zzaBcDzzzzzzzzzzzzzzzzzzzzz";
1244 text[3][3]=
"zzzaBcDzzzzzzzzzzzzzzzzzzzz";
1245 text[3][4]=
"zzzzaBcDzzzzzzzzzzzzzzzzzzz";
1246 text[3][5]=
"zzzzzaBcDzzzzzzzzzzzzzzzzzz";
1247 text[3][6]=
"zzzzzzaBcDzzzzzzzzzzzzzzzzz";
1248 text[3][7]=
"zzzzzzzaBcDzzzzzzzzzzzzzzzz";
1249 text[3][8]=
"zzzzzzzzaBcDzzzzzzzzzzzzzzz";
1250 text[3][9]=
"zzzzzzzzzaBcDzzzzzzzzzzzzzz";
1251 text[3][10]=
"zzzzzzzzzzaBcDzzzzzzzzzzzzz";
1252 text[3][11]=
"zzzzzzzzzzzaBcDzzzzzzzzzzzz";
1253 text[3][12]=
"zzzzzzzzzzzzaBcDzzzzzzzzzzz";
1254 text[3][13]=
"zzzzzzzzzzzzzaBcDzzzzzzzzzz";
1255 text[3][14]=
"zzzzzzzzzzzzzzaBcDzzzzzzzzz";
1256 text[3][15]=
"zzzzzzzzzzzzzzzaBcDzzzzzzzz";
1257 text[3][16]=
"zzzzzzzzzzzzzzzzaBcDzzzzzzz";
1258 text[3][17]=
"zzzzzzzzzzzzzzzzzaBcDzzzzzz";
1259 text[3][18]=
"zzzzzzzzzzzzzzzzzzaBcDzzzzz";
1260 text[3][19]=
"zzzzzzzzzzzzzzzzzzzaBcDzzzz";
1261 text[3][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDzzz";
1262 text[3][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDzz";
1263 text[3][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBcDz";
1264 text[3][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBcD";
1265 text[4][0]=
"aBcDezzzzzzzzzzzzzzzzzzzzzz";
1266 text[4][1]=
"zaBcDezzzzzzzzzzzzzzzzzzzzz";
1267 text[4][2]=
"zzaBcDezzzzzzzzzzzzzzzzzzzz";
1268 text[4][3]=
"zzzaBcDezzzzzzzzzzzzzzzzzzz";
1269 text[4][4]=
"zzzzaBcDezzzzzzzzzzzzzzzzzz";
1270 text[4][5]=
"zzzzzaBcDezzzzzzzzzzzzzzzzz";
1271 text[4][6]=
"zzzzzzaBcDezzzzzzzzzzzzzzzz";
1272 text[4][7]=
"zzzzzzzaBcDezzzzzzzzzzzzzzz";
1273 text[4][8]=
"zzzzzzzzaBcDezzzzzzzzzzzzzz";
1274 text[4][9]=
"zzzzzzzzzaBcDezzzzzzzzzzzzz";
1275 text[4][10]=
"zzzzzzzzzzaBcDezzzzzzzzzzzz";
1276 text[4][11]=
"zzzzzzzzzzzaBcDezzzzzzzzzzz";
1277 text[4][12]=
"zzzzzzzzzzzzaBcDezzzzzzzzzz";
1278 text[4][13]=
"zzzzzzzzzzzzzaBcDezzzzzzzzz";
1279 text[4][14]=
"zzzzzzzzzzzzzzaBcDezzzzzzzz";
1280 text[4][15]=
"zzzzzzzzzzzzzzzaBcDezzzzzzz";
1281 text[4][16]=
"zzzzzzzzzzzzzzzzaBcDezzzzzz";
1282 text[4][17]=
"zzzzzzzzzzzzzzzzzaBcDezzzzz";
1283 text[4][18]=
"zzzzzzzzzzzzzzzzzzaBcDezzzz";
1284 text[4][19]=
"zzzzzzzzzzzzzzzzzzzaBcDezzz";
1285 text[4][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDezz";
1286 text[4][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDez";
1287 text[4][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBcDe";
1288 text[5][0]=
"aBcDeFzzzzzzzzzzzzzzzzzzzzz";
1289 text[5][1]=
"zaBcDeFzzzzzzzzzzzzzzzzzzzz";
1290 text[5][2]=
"zzaBcDeFzzzzzzzzzzzzzzzzzzz";
1291 text[5][3]=
"zzzaBcDeFzzzzzzzzzzzzzzzzzz";
1292 text[5][4]=
"zzzzaBcDeFzzzzzzzzzzzzzzzzz";
1293 text[5][5]=
"zzzzzaBcDeFzzzzzzzzzzzzzzzz";
1294 text[5][6]=
"zzzzzzaBcDeFzzzzzzzzzzzzzzz";
1295 text[5][7]=
"zzzzzzzaBcDeFzzzzzzzzzzzzzz";
1296 text[5][8]=
"zzzzzzzzaBcDeFzzzzzzzzzzzzz";
1297 text[5][9]=
"zzzzzzzzzaBcDeFzzzzzzzzzzzz";
1298 text[5][10]=
"zzzzzzzzzzaBcDeFzzzzzzzzzzz";
1299 text[5][11]=
"zzzzzzzzzzzaBcDeFzzzzzzzzzz";
1300 text[5][12]=
"zzzzzzzzzzzzaBcDeFzzzzzzzzz";
1301 text[5][13]=
"zzzzzzzzzzzzzaBcDeFzzzzzzzz";
1302 text[5][14]=
"zzzzzzzzzzzzzzaBcDeFzzzzzzz";
1303 text[5][15]=
"zzzzzzzzzzzzzzzaBcDeFzzzzzz";
1304 text[5][16]=
"zzzzzzzzzzzzzzzzaBcDeFzzzzz";
1305 text[5][17]=
"zzzzzzzzzzzzzzzzzaBcDeFzzzz";
1306 text[5][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFzzz";
1307 text[5][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFzz";
1308 text[5][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFz";
1309 text[5][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDeF";
1310 text[6][0]=
"aBcDeFgzzzzzzzzzzzzzzzzzzzz";
1311 text[6][1]=
"zaBcDeFgzzzzzzzzzzzzzzzzzzz";
1312 text[6][2]=
"zzaBcDeFgzzzzzzzzzzzzzzzzzz";
1313 text[6][3]=
"zzzaBcDeFgzzzzzzzzzzzzzzzzz";
1314 text[6][4]=
"zzzzaBcDeFgzzzzzzzzzzzzzzzz";
1315 text[6][5]=
"zzzzzaBcDeFgzzzzzzzzzzzzzzz";
1316 text[6][6]=
"zzzzzzaBcDeFgzzzzzzzzzzzzzz";
1317 text[6][7]=
"zzzzzzzaBcDeFgzzzzzzzzzzzzz";
1318 text[6][8]=
"zzzzzzzzaBcDeFgzzzzzzzzzzzz";
1319 text[6][9]=
"zzzzzzzzzaBcDeFgzzzzzzzzzzz";
1320 text[6][10]=
"zzzzzzzzzzaBcDeFgzzzzzzzzzz";
1321 text[6][11]=
"zzzzzzzzzzzaBcDeFgzzzzzzzzz";
1322 text[6][12]=
"zzzzzzzzzzzzaBcDeFgzzzzzzzz";
1323 text[6][13]=
"zzzzzzzzzzzzzaBcDeFgzzzzzzz";
1324 text[6][14]=
"zzzzzzzzzzzzzzaBcDeFgzzzzzz";
1325 text[6][15]=
"zzzzzzzzzzzzzzzaBcDeFgzzzzz";
1326 text[6][16]=
"zzzzzzzzzzzzzzzzaBcDeFgzzzz";
1327 text[6][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgzzz";
1328 text[6][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgzz";
1329 text[6][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFgz";
1330 text[6][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
1331 text[7][0]=
"aBcDeFgHzzzzzzzzzzzzzzzzzzz";
1332 text[7][1]=
"zaBcDeFgHzzzzzzzzzzzzzzzzzz";
1333 text[7][2]=
"zzaBcDeFgHzzzzzzzzzzzzzzzzz";
1334 text[7][3]=
"zzzaBcDeFgHzzzzzzzzzzzzzzzz";
1335 text[7][4]=
"zzzzaBcDeFgHzzzzzzzzzzzzzzz";
1336 text[7][5]=
"zzzzzaBcDeFgHzzzzzzzzzzzzzz";
1337 text[7][6]=
"zzzzzzaBcDeFgHzzzzzzzzzzzzz";
1338 text[7][7]=
"zzzzzzzaBcDeFgHzzzzzzzzzzzz";
1339 text[7][8]=
"zzzzzzzzaBcDeFgHzzzzzzzzzzz";
1340 text[7][9]=
"zzzzzzzzzaBcDeFgHzzzzzzzzzz";
1341 text[7][10]=
"zzzzzzzzzzaBcDeFgHzzzzzzzzz";
1342 text[7][11]=
"zzzzzzzzzzzaBcDeFgHzzzzzzzz";
1343 text[7][12]=
"zzzzzzzzzzzzaBcDeFgHzzzzzzz";
1344 text[7][13]=
"zzzzzzzzzzzzzaBcDeFgHzzzzzz";
1345 text[7][14]=
"zzzzzzzzzzzzzzaBcDeFgHzzzzz";
1346 text[7][15]=
"zzzzzzzzzzzzzzzaBcDeFgHzzzz";
1347 text[7][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHzzz";
1348 text[7][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHzz";
1349 text[7][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgHz";
1350 text[7][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFgH";
1351 text[8][0]=
"aBcDeFgHizzzzzzzzzzzzzzzzzz";
1352 text[8][1]=
"zaBcDeFgHizzzzzzzzzzzzzzzzz";
1353 text[8][2]=
"zzaBcDeFgHizzzzzzzzzzzzzzzz";
1354 text[8][3]=
"zzzaBcDeFgHizzzzzzzzzzzzzzz";
1355 text[8][4]=
"zzzzaBcDeFgHizzzzzzzzzzzzzz";
1356 text[8][5]=
"zzzzzaBcDeFgHizzzzzzzzzzzzz";
1357 text[8][6]=
"zzzzzzaBcDeFgHizzzzzzzzzzzz";
1358 text[8][7]=
"zzzzzzzaBcDeFgHizzzzzzzzzzz";
1359 text[8][8]=
"zzzzzzzzaBcDeFgHizzzzzzzzzz";
1360 text[8][9]=
"zzzzzzzzzaBcDeFgHizzzzzzzzz";
1361 text[8][10]=
"zzzzzzzzzzaBcDeFgHizzzzzzzz";
1362 text[8][11]=
"zzzzzzzzzzzaBcDeFgHizzzzzzz";
1363 text[8][12]=
"zzzzzzzzzzzzaBcDeFgHizzzzzz";
1364 text[8][13]=
"zzzzzzzzzzzzzaBcDeFgHizzzzz";
1365 text[8][14]=
"zzzzzzzzzzzzzzaBcDeFgHizzzz";
1366 text[8][15]=
"zzzzzzzzzzzzzzzaBcDeFgHizzz";
1367 text[8][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHizz";
1368 text[8][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHiz";
1369 text[8][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgHi";
1370 text[9][0]=
"aBcDeFgHiJzzzzzzzzzzzzzzzzz";
1371 text[9][1]=
"zaBcDeFgHiJzzzzzzzzzzzzzzzz";
1372 text[9][2]=
"zzaBcDeFgHiJzzzzzzzzzzzzzzz";
1373 text[9][3]=
"zzzaBcDeFgHiJzzzzzzzzzzzzzz";
1374 text[9][4]=
"zzzzaBcDeFgHiJzzzzzzzzzzzzz";
1375 text[9][5]=
"zzzzzaBcDeFgHiJzzzzzzzzzzzz";
1376 text[9][6]=
"zzzzzzaBcDeFgHiJzzzzzzzzzzz";
1377 text[9][7]=
"zzzzzzzaBcDeFgHiJzzzzzzzzzz";
1378 text[9][8]=
"zzzzzzzzaBcDeFgHiJzzzzzzzzz";
1379 text[9][9]=
"zzzzzzzzzaBcDeFgHiJzzzzzzzz";
1380 text[9][10]=
"zzzzzzzzzzaBcDeFgHiJzzzzzzz";
1381 text[9][11]=
"zzzzzzzzzzzaBcDeFgHiJzzzzzz";
1382 text[9][12]=
"zzzzzzzzzzzzaBcDeFgHiJzzzzz";
1383 text[9][13]=
"zzzzzzzzzzzzzaBcDeFgHiJzzzz";
1384 text[9][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJzzz";
1385 text[9][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJzz";
1386 text[9][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHiJz";
1387 text[9][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHiJ";
1388 text[10][0]=
"aBcDeFgHiJkzzzzzzzzzzzzzzzz";
1389 text[10][1]=
"zaBcDeFgHiJkzzzzzzzzzzzzzzz";
1390 text[10][2]=
"zzaBcDeFgHiJkzzzzzzzzzzzzzz";
1391 text[10][3]=
"zzzaBcDeFgHiJkzzzzzzzzzzzzz";
1392 text[10][4]=
"zzzzaBcDeFgHiJkzzzzzzzzzzzz";
1393 text[10][5]=
"zzzzzaBcDeFgHiJkzzzzzzzzzzz";
1394 text[10][6]=
"zzzzzzaBcDeFgHiJkzzzzzzzzzz";
1395 text[10][7]=
"zzzzzzzaBcDeFgHiJkzzzzzzzzz";
1396 text[10][8]=
"zzzzzzzzaBcDeFgHiJkzzzzzzzz";
1397 text[10][9]=
"zzzzzzzzzaBcDeFgHiJkzzzzzzz";
1398 text[10][10]=
"zzzzzzzzzzaBcDeFgHiJkzzzzzz";
1399 text[10][11]=
"zzzzzzzzzzzaBcDeFgHiJkzzzzz";
1400 text[10][12]=
"zzzzzzzzzzzzaBcDeFgHiJkzzzz";
1401 text[10][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkzzz";
1402 text[10][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkzz";
1403 text[10][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJkz";
1404 text[10][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHiJk";
1405 text[11][0]=
"aBcDeFgHiJkLzzzzzzzzzzzzzzz";
1406 text[11][1]=
"zaBcDeFgHiJkLzzzzzzzzzzzzzz";
1407 text[11][2]=
"zzaBcDeFgHiJkLzzzzzzzzzzzzz";
1408 text[11][3]=
"zzzaBcDeFgHiJkLzzzzzzzzzzzz";
1409 text[11][4]=
"zzzzaBcDeFgHiJkLzzzzzzzzzzz";
1410 text[11][5]=
"zzzzzaBcDeFgHiJkLzzzzzzzzzz";
1411 text[11][6]=
"zzzzzzaBcDeFgHiJkLzzzzzzzzz";
1412 text[11][7]=
"zzzzzzzaBcDeFgHiJkLzzzzzzzz";
1413 text[11][8]=
"zzzzzzzzaBcDeFgHiJkLzzzzzzz";
1414 text[11][9]=
"zzzzzzzzzaBcDeFgHiJkLzzzzzz";
1415 text[11][10]=
"zzzzzzzzzzaBcDeFgHiJkLzzzzz";
1416 text[11][11]=
"zzzzzzzzzzzaBcDeFgHiJkLzzzz";
1417 text[11][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLzzz";
1418 text[11][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLzz";
1419 text[11][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkLz";
1420 text[11][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJkL";
1421 text[12][0]=
"aBcDeFgHiJkLmzzzzzzzzzzzzzz";
1422 text[12][1]=
"zaBcDeFgHiJkLmzzzzzzzzzzzzz";
1423 text[12][2]=
"zzaBcDeFgHiJkLmzzzzzzzzzzzz";
1424 text[12][3]=
"zzzaBcDeFgHiJkLmzzzzzzzzzzz";
1425 text[12][4]=
"zzzzaBcDeFgHiJkLmzzzzzzzzzz";
1426 text[12][5]=
"zzzzzaBcDeFgHiJkLmzzzzzzzzz";
1427 text[12][6]=
"zzzzzzaBcDeFgHiJkLmzzzzzzzz";
1428 text[12][7]=
"zzzzzzzaBcDeFgHiJkLmzzzzzzz";
1429 text[12][8]=
"zzzzzzzzaBcDeFgHiJkLmzzzzzz";
1430 text[12][9]=
"zzzzzzzzzaBcDeFgHiJkLmzzzzz";
1431 text[12][10]=
"zzzzzzzzzzaBcDeFgHiJkLmzzzz";
1432 text[12][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmzzz";
1433 text[12][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmzz";
1434 text[12][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLmz";
1435 text[12][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkLm";
1436 text[13][0]=
"aBcDeFgHiJkLmNzzzzzzzzzzzzz";
1437 text[13][1]=
"zaBcDeFgHiJkLmNzzzzzzzzzzzz";
1438 text[13][2]=
"zzaBcDeFgHiJkLmNzzzzzzzzzzz";
1439 text[13][3]=
"zzzaBcDeFgHiJkLmNzzzzzzzzzz";
1440 text[13][4]=
"zzzzaBcDeFgHiJkLmNzzzzzzzzz";
1441 text[13][5]=
"zzzzzaBcDeFgHiJkLmNzzzzzzzz";
1442 text[13][6]=
"zzzzzzaBcDeFgHiJkLmNzzzzzzz";
1443 text[13][7]=
"zzzzzzzaBcDeFgHiJkLmNzzzzzz";
1444 text[13][8]=
"zzzzzzzzaBcDeFgHiJkLmNzzzzz";
1445 text[13][9]=
"zzzzzzzzzaBcDeFgHiJkLmNzzzz";
1446 text[13][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNzzz";
1447 text[13][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNzz";
1448 text[13][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmNz";
1449 text[13][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLmN";
1450 text[14][0]=
"aBcDeFgHiJkLmNozzzzzzzzzzzz";
1451 text[14][1]=
"zaBcDeFgHiJkLmNozzzzzzzzzzz";
1452 text[14][2]=
"zzaBcDeFgHiJkLmNozzzzzzzzzz";
1453 text[14][3]=
"zzzaBcDeFgHiJkLmNozzzzzzzzz";
1454 text[14][4]=
"zzzzaBcDeFgHiJkLmNozzzzzzzz";
1455 text[14][5]=
"zzzzzaBcDeFgHiJkLmNozzzzzzz";
1456 text[14][6]=
"zzzzzzaBcDeFgHiJkLmNozzzzzz";
1457 text[14][7]=
"zzzzzzzaBcDeFgHiJkLmNozzzzz";
1458 text[14][8]=
"zzzzzzzzaBcDeFgHiJkLmNozzzz";
1459 text[14][9]=
"zzzzzzzzzaBcDeFgHiJkLmNozzz";
1460 text[14][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNozz";
1461 text[14][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNoz";
1462 text[14][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmNo";
1463 text[15][0]=
"aBcDeFgHiJkLmNoPzzzzzzzzzzz";
1464 text[15][1]=
"zaBcDeFgHiJkLmNoPzzzzzzzzzz";
1465 text[15][2]=
"zzaBcDeFgHiJkLmNoPzzzzzzzzz";
1466 text[15][3]=
"zzzaBcDeFgHiJkLmNoPzzzzzzzz";
1467 text[15][4]=
"zzzzaBcDeFgHiJkLmNoPzzzzzzz";
1468 text[15][5]=
"zzzzzaBcDeFgHiJkLmNoPzzzzzz";
1469 text[15][6]=
"zzzzzzaBcDeFgHiJkLmNoPzzzzz";
1470 text[15][7]=
"zzzzzzzaBcDeFgHiJkLmNoPzzzz";
1471 text[15][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPzzz";
1472 text[15][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPzz";
1473 text[15][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNoPz";
1474 text[15][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNoP";
1475 text[16][0]=
"aBcDeFgHiJkLmNoPqzzzzzzzzzz";
1476 text[16][1]=
"zaBcDeFgHiJkLmNoPqzzzzzzzzz";
1477 text[16][2]=
"zzaBcDeFgHiJkLmNoPqzzzzzzzz";
1478 text[16][3]=
"zzzaBcDeFgHiJkLmNoPqzzzzzzz";
1479 text[16][4]=
"zzzzaBcDeFgHiJkLmNoPqzzzzzz";
1480 text[16][5]=
"zzzzzaBcDeFgHiJkLmNoPqzzzzz";
1481 text[16][6]=
"zzzzzzaBcDeFgHiJkLmNoPqzzzz";
1482 text[16][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqzzz";
1483 text[16][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqzz";
1484 text[16][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPqz";
1485 text[16][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNoPq";
1486 text[17][0]=
"aBcDeFgHiJkLmNoPqRzzzzzzzzz";
1487 text[17][1]=
"zaBcDeFgHiJkLmNoPqRzzzzzzzz";
1488 text[17][2]=
"zzaBcDeFgHiJkLmNoPqRzzzzzzz";
1489 text[17][3]=
"zzzaBcDeFgHiJkLmNoPqRzzzzzz";
1490 text[17][4]=
"zzzzaBcDeFgHiJkLmNoPqRzzzzz";
1491 text[17][5]=
"zzzzzaBcDeFgHiJkLmNoPqRzzzz";
1492 text[17][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRzzz";
1493 text[17][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRzz";
1494 text[17][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqRz";
1495 text[17][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPqR";
1496 text[18][0]=
"aBcDeFgHiJkLmNoPqRszzzzzzzz";
1497 text[18][1]=
"zaBcDeFgHiJkLmNoPqRszzzzzzz";
1498 text[18][2]=
"zzaBcDeFgHiJkLmNoPqRszzzzzz";
1499 text[18][3]=
"zzzaBcDeFgHiJkLmNoPqRszzzzz";
1500 text[18][4]=
"zzzzaBcDeFgHiJkLmNoPqRszzzz";
1501 text[18][5]=
"zzzzzaBcDeFgHiJkLmNoPqRszzz";
1502 text[18][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRszz";
1503 text[18][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRsz";
1504 text[18][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqRs";
1505 text[19][0]=
"aBcDeFgHiJkLmNoPqRsTzzzzzzz";
1506 text[19][1]=
"zaBcDeFgHiJkLmNoPqRsTzzzzzz";
1507 text[19][2]=
"zzaBcDeFgHiJkLmNoPqRsTzzzzz";
1508 text[19][3]=
"zzzaBcDeFgHiJkLmNoPqRsTzzzz";
1509 text[19][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTzzz";
1510 text[19][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTzz";
1511 text[19][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRsTz";
1512 text[19][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRsT";
1513 text[20][0]=
"aBcDeFgHiJkLmNoPqRsTuzzzzzz";
1514 text[20][1]=
"zaBcDeFgHiJkLmNoPqRsTuzzzzz";
1515 text[20][2]=
"zzaBcDeFgHiJkLmNoPqRsTuzzzz";
1516 text[20][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuzzz";
1517 text[20][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuzz";
1518 text[20][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTuz";
1519 text[20][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRsTu";
1520 text[21][0]=
"aBcDeFgHiJkLmNoPqRsTuVzzzzz";
1521 text[21][1]=
"zaBcDeFgHiJkLmNoPqRsTuVzzzz";
1522 text[21][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVzzz";
1523 text[21][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVzz";
1524 text[21][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuVz";
1525 text[21][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTuV";
1526 text[22][0]=
"aBcDeFgHiJkLmNoPqRsTuVwzzzz";
1527 text[22][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwzzz";
1528 text[22][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwzz";
1529 text[22][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVwz";
1530 text[22][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuVw";
1531 text[23][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXzzz";
1532 text[23][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXzz";
1533 text[23][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwXz";
1534 text[23][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVwX";
1535 text[24][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXyzz";
1536 text[24][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXyz";
1537 text[24][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwXy";
1538 text[25][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXyZz";
1539 text[25][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXyZ";
1541 const char *needle[26];
1548 needle[6]=
"AbCdEfG";
1549 needle[7]=
"AbCdEfGh";
1550 needle[8]=
"AbCdEfGhI";
1551 needle[9]=
"AbCdEfGhIJ";
1552 needle[10]=
"AbCdEfGhIjK";
1553 needle[11]=
"AbCdEfGhIjKl";
1554 needle[12]=
"AbCdEfGhIjKlM";
1555 needle[13]=
"AbCdEfGhIjKlMn";
1556 needle[14]=
"AbCdEfGhIjKlMnO";
1557 needle[15]=
"AbCdEfGhIjKlMnOp";
1558 needle[16]=
"AbCdEfGhIjKlMnOpQ";
1559 needle[17]=
"AbCdEfGhIjKlMnOpQr";
1560 needle[18]=
"AbCdEfGhIjKlMnOpQrS";
1561 needle[19]=
"AbCdEfGhIjKlMnOpQrSt";
1562 needle[20]=
"AbCdEfGhIjKlMnOpQrStU";
1563 needle[21]=
"AbCdEfGhIjKlMnOpQrStUv";
1564 needle[22]=
"AbCdEfGhIjKlMnOpQrStUvW";
1565 needle[23]=
"AbCdEfGhIjKlMnOpQrStUvWx";
1566 needle[24]=
"AbCdEfGhIjKlMnOpQrStUvWxY";
1567 needle[25]=
"AbCdEfGhIjKlMnOpQrStUvWxYZ";
1570 uint8_t *found = NULL;
1571 for (i = 0; i < 26; i++) {
1572 for (j = 0; j <= (26-i); j++) {
1573 found = BasicSearchNocaseWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1575 found = Bs2bmNocaseWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1577 found = BoyerMooreNocaseWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1584 #ifdef ENABLE_SEARCH_STATS
1588 static int UtilSpmSearchStatsTest01(
void)
1591 text[0]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzza";
1592 text[1]=
"aaaaaaaaazaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaazaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaazaaaaaraaaaazaaaaaaazaaaaaaaaaaaaaazaaaaaaaazaaaaaaaaazaaaaaaaaaaaaB";
1593 text[2]=
"aBaBaBaBaBaBaBaBazaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBzBaBaBaBaBaBaBzBaBaBaBaBzBaBaBaBaBaBzBaBaBaBaBaBzBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBazaBaBaBaBaBc";
1594 text[3]=
"aBcaBcaBcaBcaBczBcaBcaBzaBcaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBzaBcaBcaBcazcaBcaBcaBcaBcaBcD";
1595 text[4]=
"aBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDzBcDaBcDaBcDaBcDzBcDaBcDaBczaBcDaBcDaBczaBcDaBcDaBcDaBcDaBzDaBcDaBcDaBcDaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDaBcDaBzDaBcDaBcDaBcDaBzDaBcDaBcDaBzDaBcDaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDazcDaBcDaBcDaBcDaBcDzBcDaBcDaBcDaBcDaBcDaBcDe";
1596 text[5]=
"aBcDeaBcDeaBcDeazcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDezBcDeaBcDeaBcDzaBcDeaBcDeaBcDeazcDzaBcDeaBcDezBcDeaBzDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBczeaBcDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDzaBcDeaBcDezBcDeaBcDezBcDeaBczeaBcDeaBcDeaBzDeaBcDezBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeF";
1597 text[6]=
"aBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBczzaBcDeaBcDeaBcDzazcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDeaBczeaBcDezzzaBcDeFg";
1598 text[7]=
"aBcDeaBczeaBcDzaBcDezBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBzDzaBcDeaBcDeazcDeaBcDzaBcDeaBczeaBcDeaBcDeaBzDzaBcDeaBcDeaBcDezBcDzaBcDeaBzDeaBcDeaBcDezBcDzaBcDeaBcDeaBzDeaBcDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBrDeaBcDeaBcDezzzaBcDeFgH";
1599 text[8]=
"aBcDeaBcDeaBczzaBcDeazcDeaBcDezBcDeaBcDzaBcDeaBcDeaBcDeaBczzaBcDeaBcDeaBczeaBcDeaBcDzzBcDeaBcDeaBcDzaBczeaBcDeaBcDzaBcDeaBczeaBcDeaBcDeaBzDeaBcDeaBcDeaBzDeaBcDeaBcDzaBcDeaBcDeazcDeaBcDeaBcDzaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBczeaBcDeaBzDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHi";
1600 text[9]=
"aBcDeaBcDzaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeazcDeaBcDeaBcDzzBcDeaBcDeaBczeaBcDzaBcDezBcDeaBczeaBcDzaBcDezBcDeaBcDzaBczeaBcDeaBcDzaBcDeazcDeaBcDeaBcDzaBczeaBcDeaBcDzaBzDeaBcDeaBczeaBcDeaBcDzaBcDeaBcDeaBzDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDeaBzDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJ";
1601 text[10]=
"aBcDeaBcDeaBczeaBcDzaBczeaBcDeaBczeaBcDeaBcDzaBcDeaBcDeazcDeaBcDeaBcDeaBzDzaBcDeazcDeaBcDeazcDeaBcDzaBcDeazcDeaBcDeaBczzaBcDeaBcDeaBzDeaBcDeaBcDzaBczeaBcDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDezBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDezBcDeaBcDeaBcDeaBzDeaBcDeaBcDezzzaBcDeFgHiJk";
1602 text[11]=
"aBcDeaBcDeaBcDeaBcDeaBzDeaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDeazcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDzzBcDeaBcDeaBcDeaBcDzaBcDzaBcDeaBzDeaBcDeaBcDezBcDeaBcDeazcDeaBcDeaBcDezBcDeaBcDeaBcDeazcDeaBcDeaBzDeaBcDeaBczeaBcDeazcDeaBcDezBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkL";
1603 text[12]=
"aBcDeaBcDeaBcDeaBcDeaBzDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDeazcDeaBcDeaBcDeazcDeaBcDeaBczeaBcDeaBcDeaBcDezBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLm";
1604 text[13]=
"aBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLmN";
1605 text[14]=
"aBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDezzzaBcDeFgHiJkLmNo";
1606 text[15]=
"aBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLmNoP";
1615 needle[6]=
"aBcDeFg";
1616 needle[7]=
"aBcDeFgH";
1617 needle[8]=
"aBcDeFgHi";
1618 needle[9]=
"aBcDeFgHiJ";
1619 needle[10]=
"aBcDeFgHiJk";
1620 needle[11]=
"aBcDeFgHiJkL";
1621 needle[12]=
"aBcDeFgHiJkLm";
1622 needle[13]=
"aBcDeFgHiJkLmN";
1623 needle[14]=
"aBcDeFgHiJkLmNo";
1624 needle[15]=
"aBcDeFgHiJkLmNoP";
1627 uint8_t *found = NULL;
1628 printf(
"\nStats for text of greater length (text with a lot of partial matches, worst case for a basic search):\n");
1629 for (i = 0; i < 16; i++) {
1630 printf(
"Pattern length %d with BasicSearch:", i+1);
1631 found = BasicSearchWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1633 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
1634 found = Bs2bmWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1636 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
1637 found = BoyerMooreWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1647 static int UtilSpmSearchStatsTest02(
void)
1650 text[0]=
"zzzzzzzzzzzzzzzzzza";
1651 text[1]=
"zzzzzzzzzzzzzzzzzzaB";
1652 text[2]=
"zzzzzzzzzzzzzzzzzzaBc";
1653 text[3]=
"zzzzzzzzzzzzzzzzzzaBcD";
1654 text[4]=
"zzzzzzzzzzzzzzzzzzaBcDe";
1655 text[5]=
"zzzzzzzzzzzzzzzzzzzzaBcDeF";
1656 text[6]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
1657 text[7]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgH";
1658 text[8]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
1659 text[9]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
1660 text[10]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
1661 text[11]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
1662 text[12]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
1663 text[13]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
1664 text[14]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
1665 text[15]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
1674 needle[6]=
"aBcDeFg";
1675 needle[7]=
"aBcDeFgH";
1676 needle[8]=
"aBcDeFgHi";
1677 needle[9]=
"aBcDeFgHiJ";
1678 needle[10]=
"aBcDeFgHiJk";
1679 needle[11]=
"aBcDeFgHiJkL";
1680 needle[12]=
"aBcDeFgHiJkLm";
1681 needle[13]=
"aBcDeFgHiJkLmN";
1682 needle[14]=
"aBcDeFgHiJkLmNo";
1683 needle[15]=
"aBcDeFgHiJkLmNoP";
1686 uint8_t *found = NULL;
1687 printf(
"\nStats for text of lower length:\n");
1688 for (i = 0; i < 16; i++) {
1689 printf(
"Pattern length %d with BasicSearch:", i+1);
1690 found = BasicSearchWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1692 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
1693 found = Bs2bmWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1695 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
1696 found = BoyerMooreWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1704 static int UtilSpmSearchStatsTest03(
void)
1709 text[2]=
"zzzzzzaBc";
1710 text[3]=
"zzzzzzaBcD";
1711 text[4]=
"zzzzzzaBcDe";
1712 text[5]=
"zzzzzzzzaBcDeF";
1713 text[6]=
"zzzzzzzzaBcDeFg";
1714 text[7]=
"zzzzzzzzaBcDeFgH";
1715 text[8]=
"zzzzzzzzaBcDeFgHi";
1716 text[9]=
"zzzzzzzzaBcDeFgHiJ";
1717 text[10]=
"zzzzzzzzaBcDeFgHiJk";
1718 text[11]=
"zzzzzzzzaBcDeFgHiJkL";
1719 text[12]=
"zzzzzzzzaBcDeFgHiJkLm";
1720 text[13]=
"zzzzzzzzaBcDeFgHiJkLmN";
1721 text[14]=
"zzzzzzzzaBcDeFgHiJkLmNo";
1722 text[15]=
"zzzzzzzzaBcDeFgHiJkLmNoP";
1731 needle[6]=
"aBcDeFg";
1732 needle[7]=
"aBcDeFgH";
1733 needle[8]=
"aBcDeFgHi";
1734 needle[9]=
"aBcDeFgHiJ";
1735 needle[10]=
"aBcDeFgHiJk";
1736 needle[11]=
"aBcDeFgHiJkL";
1737 needle[12]=
"aBcDeFgHiJkLm";
1738 needle[13]=
"aBcDeFgHiJkLmN";
1739 needle[14]=
"aBcDeFgHiJkLmNo";
1740 needle[15]=
"aBcDeFgHiJkLmNoP";
1743 uint8_t *found = NULL;
1744 printf(
"\nStats for text of lower length (badcase for):\n");
1745 for (i = 0; i < 16; i++) {
1746 printf(
"Pattern length %d with BasicSearch:", i+1);
1747 found = BasicSearchWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1750 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
1751 found = Bs2bmWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1753 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
1754 found = BoyerMooreWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1765 static int UtilSpmSearchStatsTest04(
void)
1768 text[0]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzza";
1769 text[1]=
"aaaaaaaaazaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaazaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaazaaaaaraaaaazaaaaaaazaaaaaaaaaaaaaazaaaaaaaazaaaaaaaaazaaaaaaaaaaaaB";
1770 text[2]=
"aBaBaBaBaBaBaBaBazaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBzBaBaBaBaBaBaBzBaBaBaBaBzBaBaBaBaBaBzBaBaBaBaBaBzBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBazaBaBaBaBaBc";
1771 text[3]=
"aBcaBcaBcaBcaBczBcaBcaBzaBcaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBzaBcaBcaBcazcaBcaBcaBcaBcaBcD";
1772 text[4]=
"aBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDzBcDaBcDaBcDaBcDzBcDaBcDaBczaBcDaBcDaBczaBcDaBcDaBcDaBcDaBzDaBcDaBcDaBcDaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDaBcDaBzDaBcDaBcDaBcDaBzDaBcDaBcDaBzDaBcDaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDazcDaBcDaBcDaBcDaBcDzBcDaBcDaBcDaBcDaBcDaBcDe";
1773 text[5]=
"aBcDeaBcDeaBcDeazcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDezBcDeaBcDeaBcDzaBcDeaBcDeaBcDeazcDzaBcDeaBcDezBcDeaBzDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBczeaBcDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDzaBcDeaBcDezBcDeaBcDezBcDeaBczeaBcDeaBcDeaBzDeaBcDezBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeF";
1774 text[6]=
"aBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBczzaBcDeaBcDeaBcDzazcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDeaBczeaBcDezzzaBcDeFg";
1775 text[7]=
"aBcDeaBczeaBcDzaBcDezBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBzDzaBcDeaBcDeazcDeaBcDzaBcDeaBczeaBcDeaBcDeaBzDzaBcDeaBcDeaBcDezBcDzaBcDeaBzDeaBcDeaBcDezBcDzaBcDeaBcDeaBzDeaBcDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBrDeaBcDeaBcDezzzaBcDeFgH";
1776 text[8]=
"aBcDeaBcDeaBczzaBcDeazcDeaBcDezBcDeaBcDzaBcDeaBcDeaBcDeaBczzaBcDeaBcDeaBczeaBcDeaBcDzzBcDeaBcDeaBcDzaBczeaBcDeaBcDzaBcDeaBczeaBcDeaBcDeaBzDeaBcDeaBcDeaBzDeaBcDeaBcDzaBcDeaBcDeazcDeaBcDeaBcDzaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBczeaBcDeaBzDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHi";
1777 text[9]=
"aBcDeaBcDzaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeazcDeaBcDeaBcDzzBcDeaBcDeaBczeaBcDzaBcDezBcDeaBczeaBcDzaBcDezBcDeaBcDzaBczeaBcDeaBcDzaBcDeazcDeaBcDeaBcDzaBczeaBcDeaBcDzaBzDeaBcDeaBczeaBcDeaBcDzaBcDeaBcDeaBzDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDeaBzDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJ";
1778 text[10]=
"aBcDeaBcDeaBczeaBcDzaBczeaBcDeaBczeaBcDeaBcDzaBcDeaBcDeazcDeaBcDeaBcDeaBzDzaBcDeazcDeaBcDeazcDeaBcDzaBcDeazcDeaBcDeaBczzaBcDeaBcDeaBzDeaBcDeaBcDzaBczeaBcDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDezBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDezBcDeaBcDeaBcDeaBzDeaBcDeaBcDezzzaBcDeFgHiJk";
1779 text[11]=
"aBcDeaBcDeaBcDeaBcDeaBzDeaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDeazcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDzzBcDeaBcDeaBcDeaBcDzaBcDzaBcDeaBzDeaBcDeaBcDezBcDeaBcDeazcDeaBcDeaBcDezBcDeaBcDeaBcDeazcDeaBcDeaBzDeaBcDeaBczeaBcDeazcDeaBcDezBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkL";
1780 text[12]=
"aBcDeaBcDeaBcDeaBcDeaBzDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDeazcDeaBcDeaBcDeazcDeaBcDeaBczeaBcDeaBcDeaBcDezBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLm";
1781 text[13]=
"aBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLmN";
1782 text[14]=
"aBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDezzzaBcDeFgHiJkLmNo";
1783 text[15]=
"aBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLmNoP";
1793 needle[6]=
"aBcDeFg";
1794 needle[7]=
"aBcDeFgH";
1795 needle[8]=
"aBcDeFgHi";
1796 needle[9]=
"aBcDeFgHiJ";
1797 needle[10]=
"aBcDeFgHiJk";
1798 needle[11]=
"aBcDeFgHiJkL";
1799 needle[12]=
"aBcDeFgHiJkLm";
1800 needle[13]=
"aBcDeFgHiJkLmN";
1801 needle[14]=
"aBcDeFgHiJkLmNo";
1802 needle[15]=
"aBcDeFgHiJkLmNoP";
1805 uint8_t *found = NULL;
1806 printf(
"\nStats for text of greater length:\n");
1807 for (i = 0; i < 16; i++) {
1808 printf(
"Pattern length %d with BasicSearch (Building Context):", i + 1);
1809 found = BasicSearchCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1812 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i + 1);
1813 found = Bs2bmCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1816 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i + 1);
1817 found = BoyerMooreCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1820 printf(
"Pattern length %d with SpmSearch (Building Context):", i + 1);
1821 found = RawCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1832 static int UtilSpmSearchStatsTest05(
void)
1835 text[0]=
"zzzzzzzzzzzzzzzzzza";
1836 text[1]=
"zzzzzzzzzzzzzzzzzzaB";
1837 text[2]=
"zzzzzzzzzzzzzzzzzzaBc";
1838 text[3]=
"zzzzzzzzzzzzzzzzzzaBcD";
1839 text[4]=
"zzzzzzzzzzzzzzzzzzaBcDe";
1840 text[5]=
"zzzzzzzzzzzzzzzzzzzzaBcDeF";
1841 text[6]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
1842 text[7]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgH";
1843 text[8]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
1844 text[9]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
1845 text[10]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
1846 text[11]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
1847 text[12]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
1848 text[13]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
1849 text[14]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
1850 text[15]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
1859 needle[6]=
"aBcDeFg";
1860 needle[7]=
"aBcDeFgH";
1861 needle[8]=
"aBcDeFgHi";
1862 needle[9]=
"aBcDeFgHiJ";
1863 needle[10]=
"aBcDeFgHiJk";
1864 needle[11]=
"aBcDeFgHiJkL";
1865 needle[12]=
"aBcDeFgHiJkLm";
1866 needle[13]=
"aBcDeFgHiJkLmN";
1867 needle[14]=
"aBcDeFgHiJkLmNo";
1868 needle[15]=
"aBcDeFgHiJkLmNoP";
1871 uint8_t *found = NULL;
1872 printf(
"\nStats for text of lower length:\n");
1873 for (i = 0; i < 16; i++) {
1874 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
1875 found = BasicSearchCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1878 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
1879 found = Bs2bmCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1882 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
1883 found = BoyerMooreCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1892 static int UtilSpmSearchStatsTest06(
void)
1895 text[0]=
"zzzzkzzzzzzzkzzzzzza";
1896 text[1]=
"BBBBkBBBBBBBkBBBBBaB";
1897 text[2]=
"BcBckcBcBcBckcBcBcaBc";
1898 text[3]=
"BcDBkDBcDBcDkcDBcDaBcD";
1899 text[4]=
"BcDekcDeBcDekcDezzaBcDe";
1909 uint8_t *found = NULL;
1910 printf(
"\nStats for text of lower length (badcase for):\n");
1911 for (i = 0; i < 5; i++) {
1912 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
1913 found = BasicSearchCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1916 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
1917 found = Bs2bmCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1920 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
1921 found = BoyerMooreCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1929 static int UtilSpmSearchStatsTest07(
void)
1946 uint8_t *found = NULL;
1947 printf(
"\nStats for text of real lower length (badcase for):\n");
1948 for (i = 0; i < 5; i++) {
1949 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
1950 found = BasicSearchCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1953 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
1954 found = Bs2bmCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1958 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
1959 found = BoyerMooreCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1971 static int UtilSpmNocaseSearchStatsTest01(
void)
1974 text[0]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzza";
1975 text[1]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaB";
1976 text[2]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBc";
1977 text[3]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcD";
1978 text[4]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDe";
1979 text[5]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeF";
1980 text[6]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFg";
1981 text[7]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgH";
1982 text[8]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
1983 text[9]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
1984 text[10]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
1985 text[11]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
1986 text[12]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
1987 text[13]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
1988 text[14]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
1989 text[15]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
1998 needle[6]=
"aBcDeFg";
1999 needle[7]=
"aBcDeFgH";
2000 needle[8]=
"aBcDeFgHi";
2001 needle[9]=
"aBcDeFgHiJ";
2002 needle[10]=
"aBcDeFgHiJk";
2003 needle[11]=
"aBcDeFgHiJkL";
2004 needle[12]=
"aBcDeFgHiJkLm";
2005 needle[13]=
"aBcDeFgHiJkLmN";
2006 needle[14]=
"aBcDeFgHiJkLmNo";
2007 needle[15]=
"aBcDeFgHiJkLmNoP";
2010 uint8_t *found = NULL;
2011 printf(
"\nStats for text of greater length:\n");
2012 for (i = 0; i < 16; i++) {
2013 printf(
"Pattern length %d with BasicSearch:", i+1);
2014 found = BasicSearchNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2017 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
2018 found = Bs2bmNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2021 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
2022 found = BoyerMooreNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2030 static int UtilSpmNocaseSearchStatsTest02(
void)
2033 text[0]=
"zzzzzzzzzzzzzzzzzza";
2034 text[1]=
"zzzzzzzzzzzzzzzzzzaB";
2035 text[2]=
"zzzzzzzzzzzzzzzzzzaBc";
2036 text[3]=
"zzzzzzzzzzzzzzzzzzaBcD";
2037 text[4]=
"zzzzzzzzzzzzzzzzzzaBcDe";
2038 text[5]=
"zzzzzzzzzzzzzzzzzzzzaBcDeF";
2039 text[6]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
2040 text[7]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgH";
2041 text[8]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
2042 text[9]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
2043 text[10]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
2044 text[11]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
2045 text[12]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
2046 text[13]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
2047 text[14]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
2048 text[15]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
2057 needle[6]=
"aBcDeFg";
2058 needle[7]=
"aBcDeFgH";
2059 needle[8]=
"aBcDeFgHi";
2060 needle[9]=
"aBcDeFgHiJ";
2061 needle[10]=
"aBcDeFgHiJk";
2062 needle[11]=
"aBcDeFgHiJkL";
2063 needle[12]=
"aBcDeFgHiJkLm";
2064 needle[13]=
"aBcDeFgHiJkLmN";
2065 needle[14]=
"aBcDeFgHiJkLmNo";
2066 needle[15]=
"aBcDeFgHiJkLmNoP";
2069 uint8_t *found = NULL;
2070 printf(
"\nStats for text of lower length:\n");
2071 for (i = 0; i < 16; i++) {
2072 printf(
"Pattern length %d with BasicSearch:", i+1);
2073 found = BasicSearchNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2076 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
2077 found = Bs2bmNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2080 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
2081 found = BoyerMooreNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2090 static int UtilSpmNocaseSearchStatsTest03(
void)
2093 text[0]=
"zzzzkzzzzzzzkzzzzzza";
2094 text[1]=
"BBBBkBBBBBBBkBBBBBaB";
2095 text[2]=
"BcBckcBcBcBckcBcBcaBc";
2096 text[3]=
"BcDBkDBcDBcDkcDBcDaBcD";
2097 text[4]=
"BcDekcDeBcDekcDezzaBcDe";
2107 uint8_t *found = NULL;
2108 printf(
"\nStats for text of lower length (badcase for):\n");
2109 for (i = 0; i < 5; i++) {
2110 printf(
"Pattern length %d with BasicSearch:", i+1);
2111 found = BasicSearchNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2114 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
2115 found = Bs2bmNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2118 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
2119 found = BoyerMooreNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2131 static int UtilSpmNocaseSearchStatsTest04(
void)
2134 text[0]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzza";
2135 text[1]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaB";
2136 text[2]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBc";
2137 text[3]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcD";
2138 text[4]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDe";
2139 text[5]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeF";
2140 text[6]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFg";
2141 text[7]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgH";
2142 text[8]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
2143 text[9]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
2144 text[10]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
2145 text[11]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
2146 text[12]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
2147 text[13]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
2148 text[14]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
2149 text[15]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
2158 needle[6]=
"aBcDeFg";
2159 needle[7]=
"aBcDeFgH";
2160 needle[8]=
"aBcDeFgHi";
2161 needle[9]=
"aBcDeFgHiJ";
2162 needle[10]=
"aBcDeFgHiJk";
2163 needle[11]=
"aBcDeFgHiJkL";
2164 needle[12]=
"aBcDeFgHiJkLm";
2165 needle[13]=
"aBcDeFgHiJkLmN";
2166 needle[14]=
"aBcDeFgHiJkLmNo";
2167 needle[15]=
"aBcDeFgHiJkLmNoP";
2170 uint8_t *found = NULL;
2171 printf(
"\nStats for text of greater length:\n");
2172 for (i = 0; i < 16; i++) {
2173 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
2174 found = BasicSearchNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2177 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
2178 found = Bs2bmNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2181 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
2182 found = BoyerMooreNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2190 static int UtilSpmNocaseSearchStatsTest05(
void)
2193 text[0]=
"zzzzzzzzzzzzzzzzzza";
2194 text[1]=
"zzzzzzzzzzzzzzzzzzaB";
2195 text[2]=
"zzzzzzzzzzzzzzzzzzaBc";
2196 text[3]=
"zzzzzzzzzzzzzzzzzzaBcD";
2197 text[4]=
"zzzzzzzzzzzzzzzzzzaBcDe";
2198 text[5]=
"zzzzzzzzzzzzzzzzzzzzaBcDeF";
2199 text[6]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
2200 text[7]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgH";
2201 text[8]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
2202 text[9]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
2203 text[10]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
2204 text[11]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
2205 text[12]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
2206 text[13]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
2207 text[14]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
2208 text[15]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
2217 needle[6]=
"aBcDeFg";
2218 needle[7]=
"aBcDeFgH";
2219 needle[8]=
"aBcDeFgHi";
2220 needle[9]=
"aBcDeFgHiJ";
2221 needle[10]=
"aBcDeFgHiJk";
2222 needle[11]=
"aBcDeFgHiJkL";
2223 needle[12]=
"aBcDeFgHiJkLm";
2224 needle[13]=
"aBcDeFgHiJkLmN";
2225 needle[14]=
"aBcDeFgHiJkLmNo";
2226 needle[15]=
"aBcDeFgHiJkLmNoP";
2229 uint8_t *found = NULL;
2230 printf(
"\nStats for text of lower length:\n");
2231 for (i = 0; i < 16; i++) {
2232 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
2233 found = BasicSearchNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2236 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
2237 found = Bs2bmNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2240 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
2241 found = BoyerMooreNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2250 static int UtilSpmNocaseSearchStatsTest06(
void)
2253 text[0]=
"zzzzkzzzzzzzkzzzzzza";
2254 text[1]=
"BBBBkBBBBBBBkBBBBBaB";
2255 text[2]=
"BcBckcBcBcBckcBcBcaBc";
2256 text[3]=
"BcDBkDBcDBcDkcDBcDaBcD";
2257 text[4]=
"BcDekcDeBcDekcDezzaBcDe";
2267 uint8_t *found = NULL;
2268 printf(
"\nStats for text of lower length (badcase for):\n");
2269 for (i = 0; i < 5; i++) {
2270 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
2271 found = BasicSearchNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2274 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
2275 found = Bs2bmNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2278 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
2279 found = BoyerMooreNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2287 static int UtilSpmNocaseSearchStatsTest07(
void)
2304 uint8_t *found = NULL;
2305 printf(
"\nStats for text of real lower length (badcase for):\n");
2306 for (i = 0; i < 5; i++) {
2307 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
2308 found = BasicSearchNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2311 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
2312 found = Bs2bmNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2315 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
2316 found = BoyerMooreNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2327 #define SPM_NO_MATCH UINT32_MAX
2340 static int SpmTestSearch(
const SpmTestData *d, uint8_t matcher)
2345 uint8_t *found = NULL;
2359 const uint8_t *haystack = (
const uint8_t *)d->
haystack;
2369 static int SpmSearchTest01(
void) {
2378 {
"a", 1,
"a", 1, 0, 0},
2379 {
"a", 1,
"A", 1, 1, 0},
2380 {
"A", 1,
"A", 1, 0, 0},
2381 {
"A", 1,
"a", 1, 1, 0},
2385 {
"\x00", 1,
"test\x00test", 9, 0, 4},
2387 {
"\n", 1,
"new line\n", 9, 0, 8},
2388 {
"\n", 1,
"new line\x00\n", 10, 0, 9},
2389 {
"\xff", 1,
"abcdef\xff", 7, 0, 6},
2390 {
"\xff", 1,
"abcdef\xff", 7, 1, 6},
2391 {
"$", 1,
"dollar$", 7, 0, 6},
2392 {
"^", 1,
"caret^", 6, 0, 5},
2394 {
"Suricata", 8,
"This is a Suricata test", 23, 0, 10},
2395 {
"Suricata", 8,
"This is a suricata test", 23, 1, 10},
2396 {
"Suricata", 8,
"This is a suriCATA test", 23, 1, 10},
2397 {
"suricata", 8,
"This is a Suricata test", 23, 0,
SPM_NO_MATCH},
2398 {
"Suricata", 8,
"This is a Suricat_ test", 23, 0,
SPM_NO_MATCH},
2399 {
"Suricata", 8,
"This is a _uricata test", 23, 0,
SPM_NO_MATCH},
2401 {
"foo", 3,
"foofoofoo", 9, 0, 0},
2402 {
"foo", 3,
"_foofoofoo", 9, 0, 1},
2403 {
"FOO", 3,
"foofoofoo", 9, 1, 0},
2404 {
"FOO", 3,
"_foofoofoo", 9, 1, 1},
2405 {
"FOO", 3,
"foo Foo FOo fOo foO FOO", 23, 0, 20},
2406 {
"foo", 3,
"Foo FOo fOo foO FOO foo", 23, 0, 20},
2411 if (
m->name == NULL) {
2414 for (uint32_t i = 0; i <
sizeof(data) /
sizeof(data[0]); i++) {
2416 FAIL_IF(SpmTestSearch(d, matcher) == 0);
2423 static int SpmSearchTest02(
void) {
2430 static const char* needles[] = {
2432 "a",
"b",
"c",
":",
"/",
"\x7f",
"\xff",
2434 "aa",
"aaa",
"aaaaaaaaaaaaaaaaaaaaaaa",
2436 "suricata",
"meerkat",
"aardvark",
"raptor",
"marmot",
"lemming",
2438 "Suricata",
"CAPS LOCK",
"mIxEd cAsE",
2444 if (
m->name == NULL) {
2447 printf(
"matcher: %s\n",
m->name);
2452 for (i = 0; i <
sizeof(needles) /
sizeof(needles[0]); i++) {
2453 const char *needle = needles[i];
2455 for (prefix = 0; prefix < 32; prefix++) {
2458 uint16_t haystack_len = prefix + d.
needle_len;
2459 char *haystack =
SCMalloc(haystack_len);
2461 memset(haystack,
' ', haystack_len);
2469 if (SpmTestSearch(&d, matcher) == 0) {
2470 printf(
" test %" PRIu32
": fail (case-sensitive)\n", i);
2477 for (j = 0; j < haystack_len; j++) {
2480 FAIL_IF(SpmTestSearch(&d, matcher) == 0);
2484 printf(
" %" PRIu32
" tests passed\n", i);
2494 UtRegisterTest(
"UtilSpmBasicSearchTest01", UtilSpmBasicSearchTest01);
2496 UtilSpmBasicSearchNocaseTest01);
2498 UtRegisterTest(
"UtilSpmBs2bmSearchTest01", UtilSpmBs2bmSearchTest01);
2500 UtilSpmBs2bmSearchNocaseTest01);
2503 UtilSpmBoyerMooreSearchTest01);
2505 UtilSpmBoyerMooreSearchNocaseTest01);
2507 UtilSpmBoyerMooreSearchNocaseTestIssue130);
2509 UtRegisterTest(
"UtilSpmBs2bmSearchTest02", UtilSpmBs2bmSearchTest02);
2511 UtilSpmBs2bmSearchNocaseTest02);
2513 UtRegisterTest(
"UtilSpmBasicSearchTest02", UtilSpmBasicSearchTest02);
2515 UtilSpmBasicSearchNocaseTest02);
2518 UtilSpmBoyerMooreSearchTest02);
2520 UtilSpmBoyerMooreSearchNocaseTest02);
2523 UtRegisterTest(
"UtilSpmSearchOffsetsTest01", UtilSpmSearchOffsetsTest01);
2525 UtilSpmSearchOffsetsNocaseTest01);
2531 #ifdef ENABLE_SEARCH_STATS
2533 UtRegisterTest(
"UtilSpmSearchStatsTest01", UtilSpmSearchStatsTest01);
2534 UtRegisterTest(
"UtilSpmSearchStatsTest02", UtilSpmSearchStatsTest02);
2535 UtRegisterTest(
"UtilSpmSearchStatsTest03", UtilSpmSearchStatsTest03);
2538 UtilSpmNocaseSearchStatsTest01);
2540 UtilSpmNocaseSearchStatsTest02);
2542 UtilSpmNocaseSearchStatsTest03);
2545 UtRegisterTest(
"UtilSpmSearchStatsTest04", UtilSpmSearchStatsTest04);
2546 UtRegisterTest(
"UtilSpmSearchStatsTest05", UtilSpmSearchStatsTest05);
2547 UtRegisterTest(
"UtilSpmSearchStatsTest06", UtilSpmSearchStatsTest06);
2548 UtRegisterTest(
"UtilSpmSearchStatsTest07", UtilSpmSearchStatsTest07);
2551 UtilSpmNocaseSearchStatsTest04);
2553 UtilSpmNocaseSearchStatsTest05);
2555 UtilSpmNocaseSearchStatsTest06);
2557 UtilSpmNocaseSearchStatsTest07);