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);
587 static int UtilSpmBasicSearchNocaseTest01(
void)
589 uint8_t *needle = (uint8_t *)
"OpQrSt";
590 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
591 uint8_t *found = BasicSearchNocaseWrapper(text, needle, 1);
602 static int UtilSpmBs2bmSearchTest01(
void)
604 uint8_t *needle = (uint8_t *)
"oPqRsT";
605 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
606 uint8_t *found = Bs2bmWrapper(text, needle, 1);
617 static int UtilSpmBs2bmSearchNocaseTest01(
void)
619 uint8_t *needle = (uint8_t *)
"OpQrSt";
620 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
621 uint8_t *found = Bs2bmNocaseWrapper(text, needle, 1);
632 static int UtilSpmBoyerMooreSearchTest01(
void)
634 uint8_t *needle = (uint8_t *)
"oPqRsT";
635 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
636 uint8_t *found = BoyerMooreWrapper(text, needle, 1);
647 static int UtilSpmBoyerMooreSearchNocaseTest01(
void)
649 uint8_t *needle = (uint8_t *)
"OpQrSt";
650 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
651 uint8_t *found = BoyerMooreNocaseWrapper(text, needle, 1);
663 static int UtilSpmBoyerMooreSearchNocaseTestIssue130(
void)
665 uint8_t *needle = (uint8_t *)
"WWW-Authenticate: ";
666 uint8_t *text = (uint8_t *)
"Date: Mon, 23 Feb 2009 13:31:49 GMT"
668 "Www-authenticate: Basic realm=\"Authentification user password\"\r\n"
669 "Vary: accept-language,accept-charset\r\n"
670 "Accept-ranges: bytes\r\n"
671 "Connection: close\r\n"
672 "Content-type: text/html; charset=iso-8859-1\r\n"
673 "Content-language: fr\r\n"
674 "Expires: Mon, 23 Feb 2009 13:31:49 GMT\r\n\r\n";
675 uint8_t *found = BoyerMooreNocaseWrapper(text, needle, 1);
684 static int UtilSpmBasicSearchTest02(
void)
686 uint8_t *needle = (uint8_t *)
"oPQRsT";
687 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
688 uint8_t *found = BasicSearchWrapper(text, needle, 1);
696 static int UtilSpmBasicSearchNocaseTest02(
void)
698 uint8_t *needle = (uint8_t *)
"OpZrSt";
699 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
700 uint8_t *found = BasicSearchNocaseWrapper(text, needle, 1);
708 static int UtilSpmBs2bmSearchTest02(
void)
710 uint8_t *needle = (uint8_t *)
"oPQRsT";
711 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
712 uint8_t *found = Bs2bmWrapper(text, needle, 1);
720 static int UtilSpmBs2bmSearchNocaseTest02(
void)
722 uint8_t *needle = (uint8_t *)
"OpZrSt";
723 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
724 uint8_t *found = Bs2bmNocaseWrapper(text, needle, 1);
732 static int UtilSpmBoyerMooreSearchTest02(
void)
734 uint8_t *needle = (uint8_t *)
"oPQRsT";
735 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
736 uint8_t *found = BoyerMooreWrapper(text, needle, 1);
744 static int UtilSpmBoyerMooreSearchNocaseTest02(
void)
746 uint8_t *needle = (uint8_t *)
"OpZrSt";
747 uint8_t *text = (uint8_t *)
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
748 uint8_t *found = BoyerMooreNocaseWrapper(text, needle, 1);
759 static int UtilSpmSearchOffsetsTest01(
void)
761 const char *text[26][27];
762 text[0][0]=
"azzzzzzzzzzzzzzzzzzzzzzzzzz";
763 text[0][1]=
"zazzzzzzzzzzzzzzzzzzzzzzzzz";
764 text[0][2]=
"zzazzzzzzzzzzzzzzzzzzzzzzzz";
765 text[0][3]=
"zzzazzzzzzzzzzzzzzzzzzzzzzz";
766 text[0][4]=
"zzzzazzzzzzzzzzzzzzzzzzzzzz";
767 text[0][5]=
"zzzzzazzzzzzzzzzzzzzzzzzzzz";
768 text[0][6]=
"zzzzzzazzzzzzzzzzzzzzzzzzzz";
769 text[0][7]=
"zzzzzzzazzzzzzzzzzzzzzzzzzz";
770 text[0][8]=
"zzzzzzzzazzzzzzzzzzzzzzzzzz";
771 text[0][9]=
"zzzzzzzzzazzzzzzzzzzzzzzzzz";
772 text[0][10]=
"zzzzzzzzzzazzzzzzzzzzzzzzzz";
773 text[0][11]=
"zzzzzzzzzzzazzzzzzzzzzzzzzz";
774 text[0][12]=
"zzzzzzzzzzzzazzzzzzzzzzzzzz";
775 text[0][13]=
"zzzzzzzzzzzzzazzzzzzzzzzzzz";
776 text[0][14]=
"zzzzzzzzzzzzzzazzzzzzzzzzzz";
777 text[0][15]=
"zzzzzzzzzzzzzzzazzzzzzzzzzz";
778 text[0][16]=
"zzzzzzzzzzzzzzzzazzzzzzzzzz";
779 text[0][17]=
"zzzzzzzzzzzzzzzzzazzzzzzzzz";
780 text[0][18]=
"zzzzzzzzzzzzzzzzzzazzzzzzzz";
781 text[0][19]=
"zzzzzzzzzzzzzzzzzzzazzzzzzz";
782 text[0][20]=
"zzzzzzzzzzzzzzzzzzzzazzzzzz";
783 text[0][21]=
"zzzzzzzzzzzzzzzzzzzzzazzzzz";
784 text[0][22]=
"zzzzzzzzzzzzzzzzzzzzzzazzzz";
785 text[0][23]=
"zzzzzzzzzzzzzzzzzzzzzzzazzz";
786 text[0][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzazz";
787 text[0][25]=
"zzzzzzzzzzzzzzzzzzzzzzzzzaz";
788 text[0][26]=
"zzzzzzzzzzzzzzzzzzzzzzzzzza";
789 text[1][0]=
"aBzzzzzzzzzzzzzzzzzzzzzzzzz";
790 text[1][1]=
"zaBzzzzzzzzzzzzzzzzzzzzzzzz";
791 text[1][2]=
"zzaBzzzzzzzzzzzzzzzzzzzzzzz";
792 text[1][3]=
"zzzaBzzzzzzzzzzzzzzzzzzzzzz";
793 text[1][4]=
"zzzzaBzzzzzzzzzzzzzzzzzzzzz";
794 text[1][5]=
"zzzzzaBzzzzzzzzzzzzzzzzzzzz";
795 text[1][6]=
"zzzzzzaBzzzzzzzzzzzzzzzzzzz";
796 text[1][7]=
"zzzzzzzaBzzzzzzzzzzzzzzzzzz";
797 text[1][8]=
"zzzzzzzzaBzzzzzzzzzzzzzzzzz";
798 text[1][9]=
"zzzzzzzzzaBzzzzzzzzzzzzzzzz";
799 text[1][10]=
"zzzzzzzzzzaBzzzzzzzzzzzzzzz";
800 text[1][11]=
"zzzzzzzzzzzaBzzzzzzzzzzzzzz";
801 text[1][12]=
"zzzzzzzzzzzzaBzzzzzzzzzzzzz";
802 text[1][13]=
"zzzzzzzzzzzzzaBzzzzzzzzzzzz";
803 text[1][14]=
"zzzzzzzzzzzzzzaBzzzzzzzzzzz";
804 text[1][15]=
"zzzzzzzzzzzzzzzaBzzzzzzzzzz";
805 text[1][16]=
"zzzzzzzzzzzzzzzzaBzzzzzzzzz";
806 text[1][17]=
"zzzzzzzzzzzzzzzzzaBzzzzzzzz";
807 text[1][18]=
"zzzzzzzzzzzzzzzzzzaBzzzzzzz";
808 text[1][19]=
"zzzzzzzzzzzzzzzzzzzaBzzzzzz";
809 text[1][20]=
"zzzzzzzzzzzzzzzzzzzzaBzzzzz";
810 text[1][21]=
"zzzzzzzzzzzzzzzzzzzzzaBzzzz";
811 text[1][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBzzz";
812 text[1][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBzz";
813 text[1][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzaBz";
814 text[1][25]=
"zzzzzzzzzzzzzzzzzzzzzzzzzaB";
815 text[2][0]=
"aBczzzzzzzzzzzzzzzzzzzzzzzz";
816 text[2][1]=
"zaBczzzzzzzzzzzzzzzzzzzzzzz";
817 text[2][2]=
"zzaBczzzzzzzzzzzzzzzzzzzzzz";
818 text[2][3]=
"zzzaBczzzzzzzzzzzzzzzzzzzzz";
819 text[2][4]=
"zzzzaBczzzzzzzzzzzzzzzzzzzz";
820 text[2][5]=
"zzzzzaBczzzzzzzzzzzzzzzzzzz";
821 text[2][6]=
"zzzzzzaBczzzzzzzzzzzzzzzzzz";
822 text[2][7]=
"zzzzzzzaBczzzzzzzzzzzzzzzzz";
823 text[2][8]=
"zzzzzzzzaBczzzzzzzzzzzzzzzz";
824 text[2][9]=
"zzzzzzzzzaBczzzzzzzzzzzzzzz";
825 text[2][10]=
"zzzzzzzzzzaBczzzzzzzzzzzzzz";
826 text[2][11]=
"zzzzzzzzzzzaBczzzzzzzzzzzzz";
827 text[2][12]=
"zzzzzzzzzzzzaBczzzzzzzzzzzz";
828 text[2][13]=
"zzzzzzzzzzzzzaBczzzzzzzzzzz";
829 text[2][14]=
"zzzzzzzzzzzzzzaBczzzzzzzzzz";
830 text[2][15]=
"zzzzzzzzzzzzzzzaBczzzzzzzzz";
831 text[2][16]=
"zzzzzzzzzzzzzzzzaBczzzzzzzz";
832 text[2][17]=
"zzzzzzzzzzzzzzzzzaBczzzzzzz";
833 text[2][18]=
"zzzzzzzzzzzzzzzzzzaBczzzzzz";
834 text[2][19]=
"zzzzzzzzzzzzzzzzzzzaBczzzzz";
835 text[2][20]=
"zzzzzzzzzzzzzzzzzzzzaBczzzz";
836 text[2][21]=
"zzzzzzzzzzzzzzzzzzzzzaBczzz";
837 text[2][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBczz";
838 text[2][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBcz";
839 text[2][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzaBc";
840 text[3][0]=
"aBcDzzzzzzzzzzzzzzzzzzzzzzz";
841 text[3][1]=
"zaBcDzzzzzzzzzzzzzzzzzzzzzz";
842 text[3][2]=
"zzaBcDzzzzzzzzzzzzzzzzzzzzz";
843 text[3][3]=
"zzzaBcDzzzzzzzzzzzzzzzzzzzz";
844 text[3][4]=
"zzzzaBcDzzzzzzzzzzzzzzzzzzz";
845 text[3][5]=
"zzzzzaBcDzzzzzzzzzzzzzzzzzz";
846 text[3][6]=
"zzzzzzaBcDzzzzzzzzzzzzzzzzz";
847 text[3][7]=
"zzzzzzzaBcDzzzzzzzzzzzzzzzz";
848 text[3][8]=
"zzzzzzzzaBcDzzzzzzzzzzzzzzz";
849 text[3][9]=
"zzzzzzzzzaBcDzzzzzzzzzzzzzz";
850 text[3][10]=
"zzzzzzzzzzaBcDzzzzzzzzzzzzz";
851 text[3][11]=
"zzzzzzzzzzzaBcDzzzzzzzzzzzz";
852 text[3][12]=
"zzzzzzzzzzzzaBcDzzzzzzzzzzz";
853 text[3][13]=
"zzzzzzzzzzzzzaBcDzzzzzzzzzz";
854 text[3][14]=
"zzzzzzzzzzzzzzaBcDzzzzzzzzz";
855 text[3][15]=
"zzzzzzzzzzzzzzzaBcDzzzzzzzz";
856 text[3][16]=
"zzzzzzzzzzzzzzzzaBcDzzzzzzz";
857 text[3][17]=
"zzzzzzzzzzzzzzzzzaBcDzzzzzz";
858 text[3][18]=
"zzzzzzzzzzzzzzzzzzaBcDzzzzz";
859 text[3][19]=
"zzzzzzzzzzzzzzzzzzzaBcDzzzz";
860 text[3][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDzzz";
861 text[3][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDzz";
862 text[3][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBcDz";
863 text[3][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBcD";
864 text[4][0]=
"aBcDezzzzzzzzzzzzzzzzzzzzzz";
865 text[4][1]=
"zaBcDezzzzzzzzzzzzzzzzzzzzz";
866 text[4][2]=
"zzaBcDezzzzzzzzzzzzzzzzzzzz";
867 text[4][3]=
"zzzaBcDezzzzzzzzzzzzzzzzzzz";
868 text[4][4]=
"zzzzaBcDezzzzzzzzzzzzzzzzzz";
869 text[4][5]=
"zzzzzaBcDezzzzzzzzzzzzzzzzz";
870 text[4][6]=
"zzzzzzaBcDezzzzzzzzzzzzzzzz";
871 text[4][7]=
"zzzzzzzaBcDezzzzzzzzzzzzzzz";
872 text[4][8]=
"zzzzzzzzaBcDezzzzzzzzzzzzzz";
873 text[4][9]=
"zzzzzzzzzaBcDezzzzzzzzzzzzz";
874 text[4][10]=
"zzzzzzzzzzaBcDezzzzzzzzzzzz";
875 text[4][11]=
"zzzzzzzzzzzaBcDezzzzzzzzzzz";
876 text[4][12]=
"zzzzzzzzzzzzaBcDezzzzzzzzzz";
877 text[4][13]=
"zzzzzzzzzzzzzaBcDezzzzzzzzz";
878 text[4][14]=
"zzzzzzzzzzzzzzaBcDezzzzzzzz";
879 text[4][15]=
"zzzzzzzzzzzzzzzaBcDezzzzzzz";
880 text[4][16]=
"zzzzzzzzzzzzzzzzaBcDezzzzzz";
881 text[4][17]=
"zzzzzzzzzzzzzzzzzaBcDezzzzz";
882 text[4][18]=
"zzzzzzzzzzzzzzzzzzaBcDezzzz";
883 text[4][19]=
"zzzzzzzzzzzzzzzzzzzaBcDezzz";
884 text[4][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDezz";
885 text[4][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDez";
886 text[4][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBcDe";
887 text[5][0]=
"aBcDeFzzzzzzzzzzzzzzzzzzzzz";
888 text[5][1]=
"zaBcDeFzzzzzzzzzzzzzzzzzzzz";
889 text[5][2]=
"zzaBcDeFzzzzzzzzzzzzzzzzzzz";
890 text[5][3]=
"zzzaBcDeFzzzzzzzzzzzzzzzzzz";
891 text[5][4]=
"zzzzaBcDeFzzzzzzzzzzzzzzzzz";
892 text[5][5]=
"zzzzzaBcDeFzzzzzzzzzzzzzzzz";
893 text[5][6]=
"zzzzzzaBcDeFzzzzzzzzzzzzzzz";
894 text[5][7]=
"zzzzzzzaBcDeFzzzzzzzzzzzzzz";
895 text[5][8]=
"zzzzzzzzaBcDeFzzzzzzzzzzzzz";
896 text[5][9]=
"zzzzzzzzzaBcDeFzzzzzzzzzzzz";
897 text[5][10]=
"zzzzzzzzzzaBcDeFzzzzzzzzzzz";
898 text[5][11]=
"zzzzzzzzzzzaBcDeFzzzzzzzzzz";
899 text[5][12]=
"zzzzzzzzzzzzaBcDeFzzzzzzzzz";
900 text[5][13]=
"zzzzzzzzzzzzzaBcDeFzzzzzzzz";
901 text[5][14]=
"zzzzzzzzzzzzzzaBcDeFzzzzzzz";
902 text[5][15]=
"zzzzzzzzzzzzzzzaBcDeFzzzzzz";
903 text[5][16]=
"zzzzzzzzzzzzzzzzaBcDeFzzzzz";
904 text[5][17]=
"zzzzzzzzzzzzzzzzzaBcDeFzzzz";
905 text[5][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFzzz";
906 text[5][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFzz";
907 text[5][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFz";
908 text[5][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDeF";
909 text[6][0]=
"aBcDeFgzzzzzzzzzzzzzzzzzzzz";
910 text[6][1]=
"zaBcDeFgzzzzzzzzzzzzzzzzzzz";
911 text[6][2]=
"zzaBcDeFgzzzzzzzzzzzzzzzzzz";
912 text[6][3]=
"zzzaBcDeFgzzzzzzzzzzzzzzzzz";
913 text[6][4]=
"zzzzaBcDeFgzzzzzzzzzzzzzzzz";
914 text[6][5]=
"zzzzzaBcDeFgzzzzzzzzzzzzzzz";
915 text[6][6]=
"zzzzzzaBcDeFgzzzzzzzzzzzzzz";
916 text[6][7]=
"zzzzzzzaBcDeFgzzzzzzzzzzzzz";
917 text[6][8]=
"zzzzzzzzaBcDeFgzzzzzzzzzzzz";
918 text[6][9]=
"zzzzzzzzzaBcDeFgzzzzzzzzzzz";
919 text[6][10]=
"zzzzzzzzzzaBcDeFgzzzzzzzzzz";
920 text[6][11]=
"zzzzzzzzzzzaBcDeFgzzzzzzzzz";
921 text[6][12]=
"zzzzzzzzzzzzaBcDeFgzzzzzzzz";
922 text[6][13]=
"zzzzzzzzzzzzzaBcDeFgzzzzzzz";
923 text[6][14]=
"zzzzzzzzzzzzzzaBcDeFgzzzzzz";
924 text[6][15]=
"zzzzzzzzzzzzzzzaBcDeFgzzzzz";
925 text[6][16]=
"zzzzzzzzzzzzzzzzaBcDeFgzzzz";
926 text[6][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgzzz";
927 text[6][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgzz";
928 text[6][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFgz";
929 text[6][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
930 text[7][0]=
"aBcDeFgHzzzzzzzzzzzzzzzzzzz";
931 text[7][1]=
"zaBcDeFgHzzzzzzzzzzzzzzzzzz";
932 text[7][2]=
"zzaBcDeFgHzzzzzzzzzzzzzzzzz";
933 text[7][3]=
"zzzaBcDeFgHzzzzzzzzzzzzzzzz";
934 text[7][4]=
"zzzzaBcDeFgHzzzzzzzzzzzzzzz";
935 text[7][5]=
"zzzzzaBcDeFgHzzzzzzzzzzzzzz";
936 text[7][6]=
"zzzzzzaBcDeFgHzzzzzzzzzzzzz";
937 text[7][7]=
"zzzzzzzaBcDeFgHzzzzzzzzzzzz";
938 text[7][8]=
"zzzzzzzzaBcDeFgHzzzzzzzzzzz";
939 text[7][9]=
"zzzzzzzzzaBcDeFgHzzzzzzzzzz";
940 text[7][10]=
"zzzzzzzzzzaBcDeFgHzzzzzzzzz";
941 text[7][11]=
"zzzzzzzzzzzaBcDeFgHzzzzzzzz";
942 text[7][12]=
"zzzzzzzzzzzzaBcDeFgHzzzzzzz";
943 text[7][13]=
"zzzzzzzzzzzzzaBcDeFgHzzzzzz";
944 text[7][14]=
"zzzzzzzzzzzzzzaBcDeFgHzzzzz";
945 text[7][15]=
"zzzzzzzzzzzzzzzaBcDeFgHzzzz";
946 text[7][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHzzz";
947 text[7][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHzz";
948 text[7][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgHz";
949 text[7][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFgH";
950 text[8][0]=
"aBcDeFgHizzzzzzzzzzzzzzzzzz";
951 text[8][1]=
"zaBcDeFgHizzzzzzzzzzzzzzzzz";
952 text[8][2]=
"zzaBcDeFgHizzzzzzzzzzzzzzzz";
953 text[8][3]=
"zzzaBcDeFgHizzzzzzzzzzzzzzz";
954 text[8][4]=
"zzzzaBcDeFgHizzzzzzzzzzzzzz";
955 text[8][5]=
"zzzzzaBcDeFgHizzzzzzzzzzzzz";
956 text[8][6]=
"zzzzzzaBcDeFgHizzzzzzzzzzzz";
957 text[8][7]=
"zzzzzzzaBcDeFgHizzzzzzzzzzz";
958 text[8][8]=
"zzzzzzzzaBcDeFgHizzzzzzzzzz";
959 text[8][9]=
"zzzzzzzzzaBcDeFgHizzzzzzzzz";
960 text[8][10]=
"zzzzzzzzzzaBcDeFgHizzzzzzzz";
961 text[8][11]=
"zzzzzzzzzzzaBcDeFgHizzzzzzz";
962 text[8][12]=
"zzzzzzzzzzzzaBcDeFgHizzzzzz";
963 text[8][13]=
"zzzzzzzzzzzzzaBcDeFgHizzzzz";
964 text[8][14]=
"zzzzzzzzzzzzzzaBcDeFgHizzzz";
965 text[8][15]=
"zzzzzzzzzzzzzzzaBcDeFgHizzz";
966 text[8][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHizz";
967 text[8][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHiz";
968 text[8][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgHi";
969 text[9][0]=
"aBcDeFgHiJzzzzzzzzzzzzzzzzz";
970 text[9][1]=
"zaBcDeFgHiJzzzzzzzzzzzzzzzz";
971 text[9][2]=
"zzaBcDeFgHiJzzzzzzzzzzzzzzz";
972 text[9][3]=
"zzzaBcDeFgHiJzzzzzzzzzzzzzz";
973 text[9][4]=
"zzzzaBcDeFgHiJzzzzzzzzzzzzz";
974 text[9][5]=
"zzzzzaBcDeFgHiJzzzzzzzzzzzz";
975 text[9][6]=
"zzzzzzaBcDeFgHiJzzzzzzzzzzz";
976 text[9][7]=
"zzzzzzzaBcDeFgHiJzzzzzzzzzz";
977 text[9][8]=
"zzzzzzzzaBcDeFgHiJzzzzzzzzz";
978 text[9][9]=
"zzzzzzzzzaBcDeFgHiJzzzzzzzz";
979 text[9][10]=
"zzzzzzzzzzaBcDeFgHiJzzzzzzz";
980 text[9][11]=
"zzzzzzzzzzzaBcDeFgHiJzzzzzz";
981 text[9][12]=
"zzzzzzzzzzzzaBcDeFgHiJzzzzz";
982 text[9][13]=
"zzzzzzzzzzzzzaBcDeFgHiJzzzz";
983 text[9][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJzzz";
984 text[9][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJzz";
985 text[9][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHiJz";
986 text[9][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHiJ";
987 text[10][0]=
"aBcDeFgHiJkzzzzzzzzzzzzzzzz";
988 text[10][1]=
"zaBcDeFgHiJkzzzzzzzzzzzzzzz";
989 text[10][2]=
"zzaBcDeFgHiJkzzzzzzzzzzzzzz";
990 text[10][3]=
"zzzaBcDeFgHiJkzzzzzzzzzzzzz";
991 text[10][4]=
"zzzzaBcDeFgHiJkzzzzzzzzzzzz";
992 text[10][5]=
"zzzzzaBcDeFgHiJkzzzzzzzzzzz";
993 text[10][6]=
"zzzzzzaBcDeFgHiJkzzzzzzzzzz";
994 text[10][7]=
"zzzzzzzaBcDeFgHiJkzzzzzzzzz";
995 text[10][8]=
"zzzzzzzzaBcDeFgHiJkzzzzzzzz";
996 text[10][9]=
"zzzzzzzzzaBcDeFgHiJkzzzzzzz";
997 text[10][10]=
"zzzzzzzzzzaBcDeFgHiJkzzzzzz";
998 text[10][11]=
"zzzzzzzzzzzaBcDeFgHiJkzzzzz";
999 text[10][12]=
"zzzzzzzzzzzzaBcDeFgHiJkzzzz";
1000 text[10][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkzzz";
1001 text[10][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkzz";
1002 text[10][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJkz";
1003 text[10][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHiJk";
1004 text[11][0]=
"aBcDeFgHiJkLzzzzzzzzzzzzzzz";
1005 text[11][1]=
"zaBcDeFgHiJkLzzzzzzzzzzzzzz";
1006 text[11][2]=
"zzaBcDeFgHiJkLzzzzzzzzzzzzz";
1007 text[11][3]=
"zzzaBcDeFgHiJkLzzzzzzzzzzzz";
1008 text[11][4]=
"zzzzaBcDeFgHiJkLzzzzzzzzzzz";
1009 text[11][5]=
"zzzzzaBcDeFgHiJkLzzzzzzzzzz";
1010 text[11][6]=
"zzzzzzaBcDeFgHiJkLzzzzzzzzz";
1011 text[11][7]=
"zzzzzzzaBcDeFgHiJkLzzzzzzzz";
1012 text[11][8]=
"zzzzzzzzaBcDeFgHiJkLzzzzzzz";
1013 text[11][9]=
"zzzzzzzzzaBcDeFgHiJkLzzzzzz";
1014 text[11][10]=
"zzzzzzzzzzaBcDeFgHiJkLzzzzz";
1015 text[11][11]=
"zzzzzzzzzzzaBcDeFgHiJkLzzzz";
1016 text[11][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLzzz";
1017 text[11][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLzz";
1018 text[11][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkLz";
1019 text[11][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJkL";
1020 text[12][0]=
"aBcDeFgHiJkLmzzzzzzzzzzzzzz";
1021 text[12][1]=
"zaBcDeFgHiJkLmzzzzzzzzzzzzz";
1022 text[12][2]=
"zzaBcDeFgHiJkLmzzzzzzzzzzzz";
1023 text[12][3]=
"zzzaBcDeFgHiJkLmzzzzzzzzzzz";
1024 text[12][4]=
"zzzzaBcDeFgHiJkLmzzzzzzzzzz";
1025 text[12][5]=
"zzzzzaBcDeFgHiJkLmzzzzzzzzz";
1026 text[12][6]=
"zzzzzzaBcDeFgHiJkLmzzzzzzzz";
1027 text[12][7]=
"zzzzzzzaBcDeFgHiJkLmzzzzzzz";
1028 text[12][8]=
"zzzzzzzzaBcDeFgHiJkLmzzzzzz";
1029 text[12][9]=
"zzzzzzzzzaBcDeFgHiJkLmzzzzz";
1030 text[12][10]=
"zzzzzzzzzzaBcDeFgHiJkLmzzzz";
1031 text[12][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmzzz";
1032 text[12][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmzz";
1033 text[12][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLmz";
1034 text[12][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkLm";
1035 text[13][0]=
"aBcDeFgHiJkLmNzzzzzzzzzzzzz";
1036 text[13][1]=
"zaBcDeFgHiJkLmNzzzzzzzzzzzz";
1037 text[13][2]=
"zzaBcDeFgHiJkLmNzzzzzzzzzzz";
1038 text[13][3]=
"zzzaBcDeFgHiJkLmNzzzzzzzzzz";
1039 text[13][4]=
"zzzzaBcDeFgHiJkLmNzzzzzzzzz";
1040 text[13][5]=
"zzzzzaBcDeFgHiJkLmNzzzzzzzz";
1041 text[13][6]=
"zzzzzzaBcDeFgHiJkLmNzzzzzzz";
1042 text[13][7]=
"zzzzzzzaBcDeFgHiJkLmNzzzzzz";
1043 text[13][8]=
"zzzzzzzzaBcDeFgHiJkLmNzzzzz";
1044 text[13][9]=
"zzzzzzzzzaBcDeFgHiJkLmNzzzz";
1045 text[13][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNzzz";
1046 text[13][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNzz";
1047 text[13][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmNz";
1048 text[13][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLmN";
1049 text[14][0]=
"aBcDeFgHiJkLmNozzzzzzzzzzzz";
1050 text[14][1]=
"zaBcDeFgHiJkLmNozzzzzzzzzzz";
1051 text[14][2]=
"zzaBcDeFgHiJkLmNozzzzzzzzzz";
1052 text[14][3]=
"zzzaBcDeFgHiJkLmNozzzzzzzzz";
1053 text[14][4]=
"zzzzaBcDeFgHiJkLmNozzzzzzzz";
1054 text[14][5]=
"zzzzzaBcDeFgHiJkLmNozzzzzzz";
1055 text[14][6]=
"zzzzzzaBcDeFgHiJkLmNozzzzzz";
1056 text[14][7]=
"zzzzzzzaBcDeFgHiJkLmNozzzzz";
1057 text[14][8]=
"zzzzzzzzaBcDeFgHiJkLmNozzzz";
1058 text[14][9]=
"zzzzzzzzzaBcDeFgHiJkLmNozzz";
1059 text[14][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNozz";
1060 text[14][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNoz";
1061 text[14][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmNo";
1062 text[15][0]=
"aBcDeFgHiJkLmNoPzzzzzzzzzzz";
1063 text[15][1]=
"zaBcDeFgHiJkLmNoPzzzzzzzzzz";
1064 text[15][2]=
"zzaBcDeFgHiJkLmNoPzzzzzzzzz";
1065 text[15][3]=
"zzzaBcDeFgHiJkLmNoPzzzzzzzz";
1066 text[15][4]=
"zzzzaBcDeFgHiJkLmNoPzzzzzzz";
1067 text[15][5]=
"zzzzzaBcDeFgHiJkLmNoPzzzzzz";
1068 text[15][6]=
"zzzzzzaBcDeFgHiJkLmNoPzzzzz";
1069 text[15][7]=
"zzzzzzzaBcDeFgHiJkLmNoPzzzz";
1070 text[15][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPzzz";
1071 text[15][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPzz";
1072 text[15][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNoPz";
1073 text[15][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNoP";
1074 text[16][0]=
"aBcDeFgHiJkLmNoPqzzzzzzzzzz";
1075 text[16][1]=
"zaBcDeFgHiJkLmNoPqzzzzzzzzz";
1076 text[16][2]=
"zzaBcDeFgHiJkLmNoPqzzzzzzzz";
1077 text[16][3]=
"zzzaBcDeFgHiJkLmNoPqzzzzzzz";
1078 text[16][4]=
"zzzzaBcDeFgHiJkLmNoPqzzzzzz";
1079 text[16][5]=
"zzzzzaBcDeFgHiJkLmNoPqzzzzz";
1080 text[16][6]=
"zzzzzzaBcDeFgHiJkLmNoPqzzzz";
1081 text[16][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqzzz";
1082 text[16][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqzz";
1083 text[16][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPqz";
1084 text[16][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNoPq";
1085 text[17][0]=
"aBcDeFgHiJkLmNoPqRzzzzzzzzz";
1086 text[17][1]=
"zaBcDeFgHiJkLmNoPqRzzzzzzzz";
1087 text[17][2]=
"zzaBcDeFgHiJkLmNoPqRzzzzzzz";
1088 text[17][3]=
"zzzaBcDeFgHiJkLmNoPqRzzzzzz";
1089 text[17][4]=
"zzzzaBcDeFgHiJkLmNoPqRzzzzz";
1090 text[17][5]=
"zzzzzaBcDeFgHiJkLmNoPqRzzzz";
1091 text[17][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRzzz";
1092 text[17][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRzz";
1093 text[17][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqRz";
1094 text[17][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPqR";
1095 text[18][0]=
"aBcDeFgHiJkLmNoPqRszzzzzzzz";
1096 text[18][1]=
"zaBcDeFgHiJkLmNoPqRszzzzzzz";
1097 text[18][2]=
"zzaBcDeFgHiJkLmNoPqRszzzzzz";
1098 text[18][3]=
"zzzaBcDeFgHiJkLmNoPqRszzzzz";
1099 text[18][4]=
"zzzzaBcDeFgHiJkLmNoPqRszzzz";
1100 text[18][5]=
"zzzzzaBcDeFgHiJkLmNoPqRszzz";
1101 text[18][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRszz";
1102 text[18][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRsz";
1103 text[18][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqRs";
1104 text[19][0]=
"aBcDeFgHiJkLmNoPqRsTzzzzzzz";
1105 text[19][1]=
"zaBcDeFgHiJkLmNoPqRsTzzzzzz";
1106 text[19][2]=
"zzaBcDeFgHiJkLmNoPqRsTzzzzz";
1107 text[19][3]=
"zzzaBcDeFgHiJkLmNoPqRsTzzzz";
1108 text[19][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTzzz";
1109 text[19][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTzz";
1110 text[19][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRsTz";
1111 text[19][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRsT";
1112 text[20][0]=
"aBcDeFgHiJkLmNoPqRsTuzzzzzz";
1113 text[20][1]=
"zaBcDeFgHiJkLmNoPqRsTuzzzzz";
1114 text[20][2]=
"zzaBcDeFgHiJkLmNoPqRsTuzzzz";
1115 text[20][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuzzz";
1116 text[20][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuzz";
1117 text[20][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTuz";
1118 text[20][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRsTu";
1119 text[21][0]=
"aBcDeFgHiJkLmNoPqRsTuVzzzzz";
1120 text[21][1]=
"zaBcDeFgHiJkLmNoPqRsTuVzzzz";
1121 text[21][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVzzz";
1122 text[21][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVzz";
1123 text[21][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuVz";
1124 text[21][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTuV";
1125 text[22][0]=
"aBcDeFgHiJkLmNoPqRsTuVwzzzz";
1126 text[22][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwzzz";
1127 text[22][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwzz";
1128 text[22][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVwz";
1129 text[22][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuVw";
1130 text[23][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXzzz";
1131 text[23][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXzz";
1132 text[23][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwXz";
1133 text[23][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVwX";
1134 text[24][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXyzz";
1135 text[24][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXyz";
1136 text[24][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwXy";
1137 text[25][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXyZz";
1138 text[25][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXyZ";
1140 const char *needle[26];
1147 needle[6]=
"aBcDeFg";
1148 needle[7]=
"aBcDeFgH";
1149 needle[8]=
"aBcDeFgHi";
1150 needle[9]=
"aBcDeFgHiJ";
1151 needle[10]=
"aBcDeFgHiJk";
1152 needle[11]=
"aBcDeFgHiJkL";
1153 needle[12]=
"aBcDeFgHiJkLm";
1154 needle[13]=
"aBcDeFgHiJkLmN";
1155 needle[14]=
"aBcDeFgHiJkLmNo";
1156 needle[15]=
"aBcDeFgHiJkLmNoP";
1157 needle[16]=
"aBcDeFgHiJkLmNoPq";
1158 needle[17]=
"aBcDeFgHiJkLmNoPqR";
1159 needle[18]=
"aBcDeFgHiJkLmNoPqRs";
1160 needle[19]=
"aBcDeFgHiJkLmNoPqRsT";
1161 needle[20]=
"aBcDeFgHiJkLmNoPqRsTu";
1162 needle[21]=
"aBcDeFgHiJkLmNoPqRsTuV";
1163 needle[22]=
"aBcDeFgHiJkLmNoPqRsTuVw";
1164 needle[23]=
"aBcDeFgHiJkLmNoPqRsTuVwX";
1165 needle[24]=
"aBcDeFgHiJkLmNoPqRsTuVwXy";
1166 needle[25]=
"aBcDeFgHiJkLmNoPqRsTuVwXyZ";
1169 uint8_t *found = NULL;
1170 for (i = 0; i < 26; i++) {
1171 for (j = 0; j <= (26 - i); j++) {
1172 found = BasicSearchWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1174 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i][j]);
1177 found = Bs2bmWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1179 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i][j]);
1182 found = BoyerMooreWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1184 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i][j]);
1195 static int UtilSpmSearchOffsetsNocaseTest01(
void)
1197 const char *text[26][27];
1198 text[0][0]=
"azzzzzzzzzzzzzzzzzzzzzzzzzz";
1199 text[0][1]=
"zazzzzzzzzzzzzzzzzzzzzzzzzz";
1200 text[0][2]=
"zzazzzzzzzzzzzzzzzzzzzzzzzz";
1201 text[0][3]=
"zzzazzzzzzzzzzzzzzzzzzzzzzz";
1202 text[0][4]=
"zzzzazzzzzzzzzzzzzzzzzzzzzz";
1203 text[0][5]=
"zzzzzazzzzzzzzzzzzzzzzzzzzz";
1204 text[0][6]=
"zzzzzzazzzzzzzzzzzzzzzzzzzz";
1205 text[0][7]=
"zzzzzzzazzzzzzzzzzzzzzzzzzz";
1206 text[0][8]=
"zzzzzzzzazzzzzzzzzzzzzzzzzz";
1207 text[0][9]=
"zzzzzzzzzazzzzzzzzzzzzzzzzz";
1208 text[0][10]=
"zzzzzzzzzzazzzzzzzzzzzzzzzz";
1209 text[0][11]=
"zzzzzzzzzzzazzzzzzzzzzzzzzz";
1210 text[0][12]=
"zzzzzzzzzzzzazzzzzzzzzzzzzz";
1211 text[0][13]=
"zzzzzzzzzzzzzazzzzzzzzzzzzz";
1212 text[0][14]=
"zzzzzzzzzzzzzzazzzzzzzzzzzz";
1213 text[0][15]=
"zzzzzzzzzzzzzzzazzzzzzzzzzz";
1214 text[0][16]=
"zzzzzzzzzzzzzzzzazzzzzzzzzz";
1215 text[0][17]=
"zzzzzzzzzzzzzzzzzazzzzzzzzz";
1216 text[0][18]=
"zzzzzzzzzzzzzzzzzzazzzzzzzz";
1217 text[0][19]=
"zzzzzzzzzzzzzzzzzzzazzzzzzz";
1218 text[0][20]=
"zzzzzzzzzzzzzzzzzzzzazzzzzz";
1219 text[0][21]=
"zzzzzzzzzzzzzzzzzzzzzazzzzz";
1220 text[0][22]=
"zzzzzzzzzzzzzzzzzzzzzzazzzz";
1221 text[0][23]=
"zzzzzzzzzzzzzzzzzzzzzzzazzz";
1222 text[0][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzazz";
1223 text[0][25]=
"zzzzzzzzzzzzzzzzzzzzzzzzzaz";
1224 text[0][26]=
"zzzzzzzzzzzzzzzzzzzzzzzzzza";
1225 text[1][0]=
"aBzzzzzzzzzzzzzzzzzzzzzzzzz";
1226 text[1][1]=
"zaBzzzzzzzzzzzzzzzzzzzzzzzz";
1227 text[1][2]=
"zzaBzzzzzzzzzzzzzzzzzzzzzzz";
1228 text[1][3]=
"zzzaBzzzzzzzzzzzzzzzzzzzzzz";
1229 text[1][4]=
"zzzzaBzzzzzzzzzzzzzzzzzzzzz";
1230 text[1][5]=
"zzzzzaBzzzzzzzzzzzzzzzzzzzz";
1231 text[1][6]=
"zzzzzzaBzzzzzzzzzzzzzzzzzzz";
1232 text[1][7]=
"zzzzzzzaBzzzzzzzzzzzzzzzzzz";
1233 text[1][8]=
"zzzzzzzzaBzzzzzzzzzzzzzzzzz";
1234 text[1][9]=
"zzzzzzzzzaBzzzzzzzzzzzzzzzz";
1235 text[1][10]=
"zzzzzzzzzzaBzzzzzzzzzzzzzzz";
1236 text[1][11]=
"zzzzzzzzzzzaBzzzzzzzzzzzzzz";
1237 text[1][12]=
"zzzzzzzzzzzzaBzzzzzzzzzzzzz";
1238 text[1][13]=
"zzzzzzzzzzzzzaBzzzzzzzzzzzz";
1239 text[1][14]=
"zzzzzzzzzzzzzzaBzzzzzzzzzzz";
1240 text[1][15]=
"zzzzzzzzzzzzzzzaBzzzzzzzzzz";
1241 text[1][16]=
"zzzzzzzzzzzzzzzzaBzzzzzzzzz";
1242 text[1][17]=
"zzzzzzzzzzzzzzzzzaBzzzzzzzz";
1243 text[1][18]=
"zzzzzzzzzzzzzzzzzzaBzzzzzzz";
1244 text[1][19]=
"zzzzzzzzzzzzzzzzzzzaBzzzzzz";
1245 text[1][20]=
"zzzzzzzzzzzzzzzzzzzzaBzzzzz";
1246 text[1][21]=
"zzzzzzzzzzzzzzzzzzzzzaBzzzz";
1247 text[1][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBzzz";
1248 text[1][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBzz";
1249 text[1][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzaBz";
1250 text[1][25]=
"zzzzzzzzzzzzzzzzzzzzzzzzzaB";
1251 text[2][0]=
"aBczzzzzzzzzzzzzzzzzzzzzzzz";
1252 text[2][1]=
"zaBczzzzzzzzzzzzzzzzzzzzzzz";
1253 text[2][2]=
"zzaBczzzzzzzzzzzzzzzzzzzzzz";
1254 text[2][3]=
"zzzaBczzzzzzzzzzzzzzzzzzzzz";
1255 text[2][4]=
"zzzzaBczzzzzzzzzzzzzzzzzzzz";
1256 text[2][5]=
"zzzzzaBczzzzzzzzzzzzzzzzzzz";
1257 text[2][6]=
"zzzzzzaBczzzzzzzzzzzzzzzzzz";
1258 text[2][7]=
"zzzzzzzaBczzzzzzzzzzzzzzzzz";
1259 text[2][8]=
"zzzzzzzzaBczzzzzzzzzzzzzzzz";
1260 text[2][9]=
"zzzzzzzzzaBczzzzzzzzzzzzzzz";
1261 text[2][10]=
"zzzzzzzzzzaBczzzzzzzzzzzzzz";
1262 text[2][11]=
"zzzzzzzzzzzaBczzzzzzzzzzzzz";
1263 text[2][12]=
"zzzzzzzzzzzzaBczzzzzzzzzzzz";
1264 text[2][13]=
"zzzzzzzzzzzzzaBczzzzzzzzzzz";
1265 text[2][14]=
"zzzzzzzzzzzzzzaBczzzzzzzzzz";
1266 text[2][15]=
"zzzzzzzzzzzzzzzaBczzzzzzzzz";
1267 text[2][16]=
"zzzzzzzzzzzzzzzzaBczzzzzzzz";
1268 text[2][17]=
"zzzzzzzzzzzzzzzzzaBczzzzzzz";
1269 text[2][18]=
"zzzzzzzzzzzzzzzzzzaBczzzzzz";
1270 text[2][19]=
"zzzzzzzzzzzzzzzzzzzaBczzzzz";
1271 text[2][20]=
"zzzzzzzzzzzzzzzzzzzzaBczzzz";
1272 text[2][21]=
"zzzzzzzzzzzzzzzzzzzzzaBczzz";
1273 text[2][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBczz";
1274 text[2][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBcz";
1275 text[2][24]=
"zzzzzzzzzzzzzzzzzzzzzzzzaBc";
1276 text[3][0]=
"aBcDzzzzzzzzzzzzzzzzzzzzzzz";
1277 text[3][1]=
"zaBcDzzzzzzzzzzzzzzzzzzzzzz";
1278 text[3][2]=
"zzaBcDzzzzzzzzzzzzzzzzzzzzz";
1279 text[3][3]=
"zzzaBcDzzzzzzzzzzzzzzzzzzzz";
1280 text[3][4]=
"zzzzaBcDzzzzzzzzzzzzzzzzzzz";
1281 text[3][5]=
"zzzzzaBcDzzzzzzzzzzzzzzzzzz";
1282 text[3][6]=
"zzzzzzaBcDzzzzzzzzzzzzzzzzz";
1283 text[3][7]=
"zzzzzzzaBcDzzzzzzzzzzzzzzzz";
1284 text[3][8]=
"zzzzzzzzaBcDzzzzzzzzzzzzzzz";
1285 text[3][9]=
"zzzzzzzzzaBcDzzzzzzzzzzzzzz";
1286 text[3][10]=
"zzzzzzzzzzaBcDzzzzzzzzzzzzz";
1287 text[3][11]=
"zzzzzzzzzzzaBcDzzzzzzzzzzzz";
1288 text[3][12]=
"zzzzzzzzzzzzaBcDzzzzzzzzzzz";
1289 text[3][13]=
"zzzzzzzzzzzzzaBcDzzzzzzzzzz";
1290 text[3][14]=
"zzzzzzzzzzzzzzaBcDzzzzzzzzz";
1291 text[3][15]=
"zzzzzzzzzzzzzzzaBcDzzzzzzzz";
1292 text[3][16]=
"zzzzzzzzzzzzzzzzaBcDzzzzzzz";
1293 text[3][17]=
"zzzzzzzzzzzzzzzzzaBcDzzzzzz";
1294 text[3][18]=
"zzzzzzzzzzzzzzzzzzaBcDzzzzz";
1295 text[3][19]=
"zzzzzzzzzzzzzzzzzzzaBcDzzzz";
1296 text[3][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDzzz";
1297 text[3][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDzz";
1298 text[3][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBcDz";
1299 text[3][23]=
"zzzzzzzzzzzzzzzzzzzzzzzaBcD";
1300 text[4][0]=
"aBcDezzzzzzzzzzzzzzzzzzzzzz";
1301 text[4][1]=
"zaBcDezzzzzzzzzzzzzzzzzzzzz";
1302 text[4][2]=
"zzaBcDezzzzzzzzzzzzzzzzzzzz";
1303 text[4][3]=
"zzzaBcDezzzzzzzzzzzzzzzzzzz";
1304 text[4][4]=
"zzzzaBcDezzzzzzzzzzzzzzzzzz";
1305 text[4][5]=
"zzzzzaBcDezzzzzzzzzzzzzzzzz";
1306 text[4][6]=
"zzzzzzaBcDezzzzzzzzzzzzzzzz";
1307 text[4][7]=
"zzzzzzzaBcDezzzzzzzzzzzzzzz";
1308 text[4][8]=
"zzzzzzzzaBcDezzzzzzzzzzzzzz";
1309 text[4][9]=
"zzzzzzzzzaBcDezzzzzzzzzzzzz";
1310 text[4][10]=
"zzzzzzzzzzaBcDezzzzzzzzzzzz";
1311 text[4][11]=
"zzzzzzzzzzzaBcDezzzzzzzzzzz";
1312 text[4][12]=
"zzzzzzzzzzzzaBcDezzzzzzzzzz";
1313 text[4][13]=
"zzzzzzzzzzzzzaBcDezzzzzzzzz";
1314 text[4][14]=
"zzzzzzzzzzzzzzaBcDezzzzzzzz";
1315 text[4][15]=
"zzzzzzzzzzzzzzzaBcDezzzzzzz";
1316 text[4][16]=
"zzzzzzzzzzzzzzzzaBcDezzzzzz";
1317 text[4][17]=
"zzzzzzzzzzzzzzzzzaBcDezzzzz";
1318 text[4][18]=
"zzzzzzzzzzzzzzzzzzaBcDezzzz";
1319 text[4][19]=
"zzzzzzzzzzzzzzzzzzzaBcDezzz";
1320 text[4][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDezz";
1321 text[4][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDez";
1322 text[4][22]=
"zzzzzzzzzzzzzzzzzzzzzzaBcDe";
1323 text[5][0]=
"aBcDeFzzzzzzzzzzzzzzzzzzzzz";
1324 text[5][1]=
"zaBcDeFzzzzzzzzzzzzzzzzzzzz";
1325 text[5][2]=
"zzaBcDeFzzzzzzzzzzzzzzzzzzz";
1326 text[5][3]=
"zzzaBcDeFzzzzzzzzzzzzzzzzzz";
1327 text[5][4]=
"zzzzaBcDeFzzzzzzzzzzzzzzzzz";
1328 text[5][5]=
"zzzzzaBcDeFzzzzzzzzzzzzzzzz";
1329 text[5][6]=
"zzzzzzaBcDeFzzzzzzzzzzzzzzz";
1330 text[5][7]=
"zzzzzzzaBcDeFzzzzzzzzzzzzzz";
1331 text[5][8]=
"zzzzzzzzaBcDeFzzzzzzzzzzzzz";
1332 text[5][9]=
"zzzzzzzzzaBcDeFzzzzzzzzzzzz";
1333 text[5][10]=
"zzzzzzzzzzaBcDeFzzzzzzzzzzz";
1334 text[5][11]=
"zzzzzzzzzzzaBcDeFzzzzzzzzzz";
1335 text[5][12]=
"zzzzzzzzzzzzaBcDeFzzzzzzzzz";
1336 text[5][13]=
"zzzzzzzzzzzzzaBcDeFzzzzzzzz";
1337 text[5][14]=
"zzzzzzzzzzzzzzaBcDeFzzzzzzz";
1338 text[5][15]=
"zzzzzzzzzzzzzzzaBcDeFzzzzzz";
1339 text[5][16]=
"zzzzzzzzzzzzzzzzaBcDeFzzzzz";
1340 text[5][17]=
"zzzzzzzzzzzzzzzzzaBcDeFzzzz";
1341 text[5][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFzzz";
1342 text[5][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFzz";
1343 text[5][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFz";
1344 text[5][21]=
"zzzzzzzzzzzzzzzzzzzzzaBcDeF";
1345 text[6][0]=
"aBcDeFgzzzzzzzzzzzzzzzzzzzz";
1346 text[6][1]=
"zaBcDeFgzzzzzzzzzzzzzzzzzzz";
1347 text[6][2]=
"zzaBcDeFgzzzzzzzzzzzzzzzzzz";
1348 text[6][3]=
"zzzaBcDeFgzzzzzzzzzzzzzzzzz";
1349 text[6][4]=
"zzzzaBcDeFgzzzzzzzzzzzzzzzz";
1350 text[6][5]=
"zzzzzaBcDeFgzzzzzzzzzzzzzzz";
1351 text[6][6]=
"zzzzzzaBcDeFgzzzzzzzzzzzzzz";
1352 text[6][7]=
"zzzzzzzaBcDeFgzzzzzzzzzzzzz";
1353 text[6][8]=
"zzzzzzzzaBcDeFgzzzzzzzzzzzz";
1354 text[6][9]=
"zzzzzzzzzaBcDeFgzzzzzzzzzzz";
1355 text[6][10]=
"zzzzzzzzzzaBcDeFgzzzzzzzzzz";
1356 text[6][11]=
"zzzzzzzzzzzaBcDeFgzzzzzzzzz";
1357 text[6][12]=
"zzzzzzzzzzzzaBcDeFgzzzzzzzz";
1358 text[6][13]=
"zzzzzzzzzzzzzaBcDeFgzzzzzzz";
1359 text[6][14]=
"zzzzzzzzzzzzzzaBcDeFgzzzzzz";
1360 text[6][15]=
"zzzzzzzzzzzzzzzaBcDeFgzzzzz";
1361 text[6][16]=
"zzzzzzzzzzzzzzzzaBcDeFgzzzz";
1362 text[6][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgzzz";
1363 text[6][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgzz";
1364 text[6][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFgz";
1365 text[6][20]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
1366 text[7][0]=
"aBcDeFgHzzzzzzzzzzzzzzzzzzz";
1367 text[7][1]=
"zaBcDeFgHzzzzzzzzzzzzzzzzzz";
1368 text[7][2]=
"zzaBcDeFgHzzzzzzzzzzzzzzzzz";
1369 text[7][3]=
"zzzaBcDeFgHzzzzzzzzzzzzzzzz";
1370 text[7][4]=
"zzzzaBcDeFgHzzzzzzzzzzzzzzz";
1371 text[7][5]=
"zzzzzaBcDeFgHzzzzzzzzzzzzzz";
1372 text[7][6]=
"zzzzzzaBcDeFgHzzzzzzzzzzzzz";
1373 text[7][7]=
"zzzzzzzaBcDeFgHzzzzzzzzzzzz";
1374 text[7][8]=
"zzzzzzzzaBcDeFgHzzzzzzzzzzz";
1375 text[7][9]=
"zzzzzzzzzaBcDeFgHzzzzzzzzzz";
1376 text[7][10]=
"zzzzzzzzzzaBcDeFgHzzzzzzzzz";
1377 text[7][11]=
"zzzzzzzzzzzaBcDeFgHzzzzzzzz";
1378 text[7][12]=
"zzzzzzzzzzzzaBcDeFgHzzzzzzz";
1379 text[7][13]=
"zzzzzzzzzzzzzaBcDeFgHzzzzzz";
1380 text[7][14]=
"zzzzzzzzzzzzzzaBcDeFgHzzzzz";
1381 text[7][15]=
"zzzzzzzzzzzzzzzaBcDeFgHzzzz";
1382 text[7][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHzzz";
1383 text[7][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHzz";
1384 text[7][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgHz";
1385 text[7][19]=
"zzzzzzzzzzzzzzzzzzzaBcDeFgH";
1386 text[8][0]=
"aBcDeFgHizzzzzzzzzzzzzzzzzz";
1387 text[8][1]=
"zaBcDeFgHizzzzzzzzzzzzzzzzz";
1388 text[8][2]=
"zzaBcDeFgHizzzzzzzzzzzzzzzz";
1389 text[8][3]=
"zzzaBcDeFgHizzzzzzzzzzzzzzz";
1390 text[8][4]=
"zzzzaBcDeFgHizzzzzzzzzzzzzz";
1391 text[8][5]=
"zzzzzaBcDeFgHizzzzzzzzzzzzz";
1392 text[8][6]=
"zzzzzzaBcDeFgHizzzzzzzzzzzz";
1393 text[8][7]=
"zzzzzzzaBcDeFgHizzzzzzzzzzz";
1394 text[8][8]=
"zzzzzzzzaBcDeFgHizzzzzzzzzz";
1395 text[8][9]=
"zzzzzzzzzaBcDeFgHizzzzzzzzz";
1396 text[8][10]=
"zzzzzzzzzzaBcDeFgHizzzzzzzz";
1397 text[8][11]=
"zzzzzzzzzzzaBcDeFgHizzzzzzz";
1398 text[8][12]=
"zzzzzzzzzzzzaBcDeFgHizzzzzz";
1399 text[8][13]=
"zzzzzzzzzzzzzaBcDeFgHizzzzz";
1400 text[8][14]=
"zzzzzzzzzzzzzzaBcDeFgHizzzz";
1401 text[8][15]=
"zzzzzzzzzzzzzzzaBcDeFgHizzz";
1402 text[8][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHizz";
1403 text[8][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHiz";
1404 text[8][18]=
"zzzzzzzzzzzzzzzzzzaBcDeFgHi";
1405 text[9][0]=
"aBcDeFgHiJzzzzzzzzzzzzzzzzz";
1406 text[9][1]=
"zaBcDeFgHiJzzzzzzzzzzzzzzzz";
1407 text[9][2]=
"zzaBcDeFgHiJzzzzzzzzzzzzzzz";
1408 text[9][3]=
"zzzaBcDeFgHiJzzzzzzzzzzzzzz";
1409 text[9][4]=
"zzzzaBcDeFgHiJzzzzzzzzzzzzz";
1410 text[9][5]=
"zzzzzaBcDeFgHiJzzzzzzzzzzzz";
1411 text[9][6]=
"zzzzzzaBcDeFgHiJzzzzzzzzzzz";
1412 text[9][7]=
"zzzzzzzaBcDeFgHiJzzzzzzzzzz";
1413 text[9][8]=
"zzzzzzzzaBcDeFgHiJzzzzzzzzz";
1414 text[9][9]=
"zzzzzzzzzaBcDeFgHiJzzzzzzzz";
1415 text[9][10]=
"zzzzzzzzzzaBcDeFgHiJzzzzzzz";
1416 text[9][11]=
"zzzzzzzzzzzaBcDeFgHiJzzzzzz";
1417 text[9][12]=
"zzzzzzzzzzzzaBcDeFgHiJzzzzz";
1418 text[9][13]=
"zzzzzzzzzzzzzaBcDeFgHiJzzzz";
1419 text[9][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJzzz";
1420 text[9][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJzz";
1421 text[9][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHiJz";
1422 text[9][17]=
"zzzzzzzzzzzzzzzzzaBcDeFgHiJ";
1423 text[10][0]=
"aBcDeFgHiJkzzzzzzzzzzzzzzzz";
1424 text[10][1]=
"zaBcDeFgHiJkzzzzzzzzzzzzzzz";
1425 text[10][2]=
"zzaBcDeFgHiJkzzzzzzzzzzzzzz";
1426 text[10][3]=
"zzzaBcDeFgHiJkzzzzzzzzzzzzz";
1427 text[10][4]=
"zzzzaBcDeFgHiJkzzzzzzzzzzzz";
1428 text[10][5]=
"zzzzzaBcDeFgHiJkzzzzzzzzzzz";
1429 text[10][6]=
"zzzzzzaBcDeFgHiJkzzzzzzzzzz";
1430 text[10][7]=
"zzzzzzzaBcDeFgHiJkzzzzzzzzz";
1431 text[10][8]=
"zzzzzzzzaBcDeFgHiJkzzzzzzzz";
1432 text[10][9]=
"zzzzzzzzzaBcDeFgHiJkzzzzzzz";
1433 text[10][10]=
"zzzzzzzzzzaBcDeFgHiJkzzzzzz";
1434 text[10][11]=
"zzzzzzzzzzzaBcDeFgHiJkzzzzz";
1435 text[10][12]=
"zzzzzzzzzzzzaBcDeFgHiJkzzzz";
1436 text[10][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkzzz";
1437 text[10][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkzz";
1438 text[10][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJkz";
1439 text[10][16]=
"zzzzzzzzzzzzzzzzaBcDeFgHiJk";
1440 text[11][0]=
"aBcDeFgHiJkLzzzzzzzzzzzzzzz";
1441 text[11][1]=
"zaBcDeFgHiJkLzzzzzzzzzzzzzz";
1442 text[11][2]=
"zzaBcDeFgHiJkLzzzzzzzzzzzzz";
1443 text[11][3]=
"zzzaBcDeFgHiJkLzzzzzzzzzzzz";
1444 text[11][4]=
"zzzzaBcDeFgHiJkLzzzzzzzzzzz";
1445 text[11][5]=
"zzzzzaBcDeFgHiJkLzzzzzzzzzz";
1446 text[11][6]=
"zzzzzzaBcDeFgHiJkLzzzzzzzzz";
1447 text[11][7]=
"zzzzzzzaBcDeFgHiJkLzzzzzzzz";
1448 text[11][8]=
"zzzzzzzzaBcDeFgHiJkLzzzzzzz";
1449 text[11][9]=
"zzzzzzzzzaBcDeFgHiJkLzzzzzz";
1450 text[11][10]=
"zzzzzzzzzzaBcDeFgHiJkLzzzzz";
1451 text[11][11]=
"zzzzzzzzzzzaBcDeFgHiJkLzzzz";
1452 text[11][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLzzz";
1453 text[11][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLzz";
1454 text[11][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkLz";
1455 text[11][15]=
"zzzzzzzzzzzzzzzaBcDeFgHiJkL";
1456 text[12][0]=
"aBcDeFgHiJkLmzzzzzzzzzzzzzz";
1457 text[12][1]=
"zaBcDeFgHiJkLmzzzzzzzzzzzzz";
1458 text[12][2]=
"zzaBcDeFgHiJkLmzzzzzzzzzzzz";
1459 text[12][3]=
"zzzaBcDeFgHiJkLmzzzzzzzzzzz";
1460 text[12][4]=
"zzzzaBcDeFgHiJkLmzzzzzzzzzz";
1461 text[12][5]=
"zzzzzaBcDeFgHiJkLmzzzzzzzzz";
1462 text[12][6]=
"zzzzzzaBcDeFgHiJkLmzzzzzzzz";
1463 text[12][7]=
"zzzzzzzaBcDeFgHiJkLmzzzzzzz";
1464 text[12][8]=
"zzzzzzzzaBcDeFgHiJkLmzzzzzz";
1465 text[12][9]=
"zzzzzzzzzaBcDeFgHiJkLmzzzzz";
1466 text[12][10]=
"zzzzzzzzzzaBcDeFgHiJkLmzzzz";
1467 text[12][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmzzz";
1468 text[12][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmzz";
1469 text[12][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLmz";
1470 text[12][14]=
"zzzzzzzzzzzzzzaBcDeFgHiJkLm";
1471 text[13][0]=
"aBcDeFgHiJkLmNzzzzzzzzzzzzz";
1472 text[13][1]=
"zaBcDeFgHiJkLmNzzzzzzzzzzzz";
1473 text[13][2]=
"zzaBcDeFgHiJkLmNzzzzzzzzzzz";
1474 text[13][3]=
"zzzaBcDeFgHiJkLmNzzzzzzzzzz";
1475 text[13][4]=
"zzzzaBcDeFgHiJkLmNzzzzzzzzz";
1476 text[13][5]=
"zzzzzaBcDeFgHiJkLmNzzzzzzzz";
1477 text[13][6]=
"zzzzzzaBcDeFgHiJkLmNzzzzzzz";
1478 text[13][7]=
"zzzzzzzaBcDeFgHiJkLmNzzzzzz";
1479 text[13][8]=
"zzzzzzzzaBcDeFgHiJkLmNzzzzz";
1480 text[13][9]=
"zzzzzzzzzaBcDeFgHiJkLmNzzzz";
1481 text[13][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNzzz";
1482 text[13][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNzz";
1483 text[13][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmNz";
1484 text[13][13]=
"zzzzzzzzzzzzzaBcDeFgHiJkLmN";
1485 text[14][0]=
"aBcDeFgHiJkLmNozzzzzzzzzzzz";
1486 text[14][1]=
"zaBcDeFgHiJkLmNozzzzzzzzzzz";
1487 text[14][2]=
"zzaBcDeFgHiJkLmNozzzzzzzzzz";
1488 text[14][3]=
"zzzaBcDeFgHiJkLmNozzzzzzzzz";
1489 text[14][4]=
"zzzzaBcDeFgHiJkLmNozzzzzzzz";
1490 text[14][5]=
"zzzzzaBcDeFgHiJkLmNozzzzzzz";
1491 text[14][6]=
"zzzzzzaBcDeFgHiJkLmNozzzzzz";
1492 text[14][7]=
"zzzzzzzaBcDeFgHiJkLmNozzzzz";
1493 text[14][8]=
"zzzzzzzzaBcDeFgHiJkLmNozzzz";
1494 text[14][9]=
"zzzzzzzzzaBcDeFgHiJkLmNozzz";
1495 text[14][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNozz";
1496 text[14][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNoz";
1497 text[14][12]=
"zzzzzzzzzzzzaBcDeFgHiJkLmNo";
1498 text[15][0]=
"aBcDeFgHiJkLmNoPzzzzzzzzzzz";
1499 text[15][1]=
"zaBcDeFgHiJkLmNoPzzzzzzzzzz";
1500 text[15][2]=
"zzaBcDeFgHiJkLmNoPzzzzzzzzz";
1501 text[15][3]=
"zzzaBcDeFgHiJkLmNoPzzzzzzzz";
1502 text[15][4]=
"zzzzaBcDeFgHiJkLmNoPzzzzzzz";
1503 text[15][5]=
"zzzzzaBcDeFgHiJkLmNoPzzzzzz";
1504 text[15][6]=
"zzzzzzaBcDeFgHiJkLmNoPzzzzz";
1505 text[15][7]=
"zzzzzzzaBcDeFgHiJkLmNoPzzzz";
1506 text[15][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPzzz";
1507 text[15][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPzz";
1508 text[15][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNoPz";
1509 text[15][11]=
"zzzzzzzzzzzaBcDeFgHiJkLmNoP";
1510 text[16][0]=
"aBcDeFgHiJkLmNoPqzzzzzzzzzz";
1511 text[16][1]=
"zaBcDeFgHiJkLmNoPqzzzzzzzzz";
1512 text[16][2]=
"zzaBcDeFgHiJkLmNoPqzzzzzzzz";
1513 text[16][3]=
"zzzaBcDeFgHiJkLmNoPqzzzzzzz";
1514 text[16][4]=
"zzzzaBcDeFgHiJkLmNoPqzzzzzz";
1515 text[16][5]=
"zzzzzaBcDeFgHiJkLmNoPqzzzzz";
1516 text[16][6]=
"zzzzzzaBcDeFgHiJkLmNoPqzzzz";
1517 text[16][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqzzz";
1518 text[16][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqzz";
1519 text[16][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPqz";
1520 text[16][10]=
"zzzzzzzzzzaBcDeFgHiJkLmNoPq";
1521 text[17][0]=
"aBcDeFgHiJkLmNoPqRzzzzzzzzz";
1522 text[17][1]=
"zaBcDeFgHiJkLmNoPqRzzzzzzzz";
1523 text[17][2]=
"zzaBcDeFgHiJkLmNoPqRzzzzzzz";
1524 text[17][3]=
"zzzaBcDeFgHiJkLmNoPqRzzzzzz";
1525 text[17][4]=
"zzzzaBcDeFgHiJkLmNoPqRzzzzz";
1526 text[17][5]=
"zzzzzaBcDeFgHiJkLmNoPqRzzzz";
1527 text[17][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRzzz";
1528 text[17][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRzz";
1529 text[17][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqRz";
1530 text[17][9]=
"zzzzzzzzzaBcDeFgHiJkLmNoPqR";
1531 text[18][0]=
"aBcDeFgHiJkLmNoPqRszzzzzzzz";
1532 text[18][1]=
"zaBcDeFgHiJkLmNoPqRszzzzzzz";
1533 text[18][2]=
"zzaBcDeFgHiJkLmNoPqRszzzzzz";
1534 text[18][3]=
"zzzaBcDeFgHiJkLmNoPqRszzzzz";
1535 text[18][4]=
"zzzzaBcDeFgHiJkLmNoPqRszzzz";
1536 text[18][5]=
"zzzzzaBcDeFgHiJkLmNoPqRszzz";
1537 text[18][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRszz";
1538 text[18][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRsz";
1539 text[18][8]=
"zzzzzzzzaBcDeFgHiJkLmNoPqRs";
1540 text[19][0]=
"aBcDeFgHiJkLmNoPqRsTzzzzzzz";
1541 text[19][1]=
"zaBcDeFgHiJkLmNoPqRsTzzzzzz";
1542 text[19][2]=
"zzaBcDeFgHiJkLmNoPqRsTzzzzz";
1543 text[19][3]=
"zzzaBcDeFgHiJkLmNoPqRsTzzzz";
1544 text[19][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTzzz";
1545 text[19][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTzz";
1546 text[19][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRsTz";
1547 text[19][7]=
"zzzzzzzaBcDeFgHiJkLmNoPqRsT";
1548 text[20][0]=
"aBcDeFgHiJkLmNoPqRsTuzzzzzz";
1549 text[20][1]=
"zaBcDeFgHiJkLmNoPqRsTuzzzzz";
1550 text[20][2]=
"zzaBcDeFgHiJkLmNoPqRsTuzzzz";
1551 text[20][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuzzz";
1552 text[20][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuzz";
1553 text[20][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTuz";
1554 text[20][6]=
"zzzzzzaBcDeFgHiJkLmNoPqRsTu";
1555 text[21][0]=
"aBcDeFgHiJkLmNoPqRsTuVzzzzz";
1556 text[21][1]=
"zaBcDeFgHiJkLmNoPqRsTuVzzzz";
1557 text[21][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVzzz";
1558 text[21][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVzz";
1559 text[21][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuVz";
1560 text[21][5]=
"zzzzzaBcDeFgHiJkLmNoPqRsTuV";
1561 text[22][0]=
"aBcDeFgHiJkLmNoPqRsTuVwzzzz";
1562 text[22][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwzzz";
1563 text[22][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwzz";
1564 text[22][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVwz";
1565 text[22][4]=
"zzzzaBcDeFgHiJkLmNoPqRsTuVw";
1566 text[23][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXzzz";
1567 text[23][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXzz";
1568 text[23][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwXz";
1569 text[23][3]=
"zzzaBcDeFgHiJkLmNoPqRsTuVwX";
1570 text[24][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXyzz";
1571 text[24][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXyz";
1572 text[24][2]=
"zzaBcDeFgHiJkLmNoPqRsTuVwXy";
1573 text[25][0]=
"aBcDeFgHiJkLmNoPqRsTuVwXyZz";
1574 text[25][1]=
"zaBcDeFgHiJkLmNoPqRsTuVwXyZ";
1576 const char *needle[26];
1583 needle[6]=
"AbCdEfG";
1584 needle[7]=
"AbCdEfGh";
1585 needle[8]=
"AbCdEfGhI";
1586 needle[9]=
"AbCdEfGhIJ";
1587 needle[10]=
"AbCdEfGhIjK";
1588 needle[11]=
"AbCdEfGhIjKl";
1589 needle[12]=
"AbCdEfGhIjKlM";
1590 needle[13]=
"AbCdEfGhIjKlMn";
1591 needle[14]=
"AbCdEfGhIjKlMnO";
1592 needle[15]=
"AbCdEfGhIjKlMnOp";
1593 needle[16]=
"AbCdEfGhIjKlMnOpQ";
1594 needle[17]=
"AbCdEfGhIjKlMnOpQr";
1595 needle[18]=
"AbCdEfGhIjKlMnOpQrS";
1596 needle[19]=
"AbCdEfGhIjKlMnOpQrSt";
1597 needle[20]=
"AbCdEfGhIjKlMnOpQrStU";
1598 needle[21]=
"AbCdEfGhIjKlMnOpQrStUv";
1599 needle[22]=
"AbCdEfGhIjKlMnOpQrStUvW";
1600 needle[23]=
"AbCdEfGhIjKlMnOpQrStUvWx";
1601 needle[24]=
"AbCdEfGhIjKlMnOpQrStUvWxY";
1602 needle[25]=
"AbCdEfGhIjKlMnOpQrStUvWxYZ";
1605 uint8_t *found = NULL;
1606 for (i = 0; i < 26; i++) {
1607 for (j = 0; j <= (26-i); j++) {
1608 found = BasicSearchNocaseWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1610 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i][j]);
1613 found = Bs2bmNocaseWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1615 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i][j]);
1618 found = BoyerMooreNocaseWrapper((uint8_t *)text[i][j], (uint8_t *)needle[i], 1);
1620 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i][j]);
1628 #ifdef ENABLE_SEARCH_STATS
1632 static int UtilSpmSearchStatsTest01(
void)
1635 text[0]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzza";
1636 text[1]=
"aaaaaaaaazaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaazaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaazaaaaaraaaaazaaaaaaazaaaaaaaaaaaaaazaaaaaaaazaaaaaaaaazaaaaaaaaaaaaB";
1637 text[2]=
"aBaBaBaBaBaBaBaBazaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBzBaBaBaBaBaBaBzBaBaBaBaBzBaBaBaBaBaBzBaBaBaBaBaBzBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBazaBaBaBaBaBc";
1638 text[3]=
"aBcaBcaBcaBcaBczBcaBcaBzaBcaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBzaBcaBcaBcazcaBcaBcaBcaBcaBcD";
1639 text[4]=
"aBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDzBcDaBcDaBcDaBcDzBcDaBcDaBczaBcDaBcDaBczaBcDaBcDaBcDaBcDaBzDaBcDaBcDaBcDaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDaBcDaBzDaBcDaBcDaBcDaBzDaBcDaBcDaBzDaBcDaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDazcDaBcDaBcDaBcDaBcDzBcDaBcDaBcDaBcDaBcDaBcDe";
1640 text[5]=
"aBcDeaBcDeaBcDeazcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDezBcDeaBcDeaBcDzaBcDeaBcDeaBcDeazcDzaBcDeaBcDezBcDeaBzDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBczeaBcDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDzaBcDeaBcDezBcDeaBcDezBcDeaBczeaBcDeaBcDeaBzDeaBcDezBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeF";
1641 text[6]=
"aBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBczzaBcDeaBcDeaBcDzazcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDeaBczeaBcDezzzaBcDeFg";
1642 text[7]=
"aBcDeaBczeaBcDzaBcDezBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBzDzaBcDeaBcDeazcDeaBcDzaBcDeaBczeaBcDeaBcDeaBzDzaBcDeaBcDeaBcDezBcDzaBcDeaBzDeaBcDeaBcDezBcDzaBcDeaBcDeaBzDeaBcDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBrDeaBcDeaBcDezzzaBcDeFgH";
1643 text[8]=
"aBcDeaBcDeaBczzaBcDeazcDeaBcDezBcDeaBcDzaBcDeaBcDeaBcDeaBczzaBcDeaBcDeaBczeaBcDeaBcDzzBcDeaBcDeaBcDzaBczeaBcDeaBcDzaBcDeaBczeaBcDeaBcDeaBzDeaBcDeaBcDeaBzDeaBcDeaBcDzaBcDeaBcDeazcDeaBcDeaBcDzaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBczeaBcDeaBzDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHi";
1644 text[9]=
"aBcDeaBcDzaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeazcDeaBcDeaBcDzzBcDeaBcDeaBczeaBcDzaBcDezBcDeaBczeaBcDzaBcDezBcDeaBcDzaBczeaBcDeaBcDzaBcDeazcDeaBcDeaBcDzaBczeaBcDeaBcDzaBzDeaBcDeaBczeaBcDeaBcDzaBcDeaBcDeaBzDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDeaBzDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJ";
1645 text[10]=
"aBcDeaBcDeaBczeaBcDzaBczeaBcDeaBczeaBcDeaBcDzaBcDeaBcDeazcDeaBcDeaBcDeaBzDzaBcDeazcDeaBcDeazcDeaBcDzaBcDeazcDeaBcDeaBczzaBcDeaBcDeaBzDeaBcDeaBcDzaBczeaBcDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDezBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDezBcDeaBcDeaBcDeaBzDeaBcDeaBcDezzzaBcDeFgHiJk";
1646 text[11]=
"aBcDeaBcDeaBcDeaBcDeaBzDeaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDeazcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDzzBcDeaBcDeaBcDeaBcDzaBcDzaBcDeaBzDeaBcDeaBcDezBcDeaBcDeazcDeaBcDeaBcDezBcDeaBcDeaBcDeazcDeaBcDeaBzDeaBcDeaBczeaBcDeazcDeaBcDezBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkL";
1647 text[12]=
"aBcDeaBcDeaBcDeaBcDeaBzDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDeazcDeaBcDeaBcDeazcDeaBcDeaBczeaBcDeaBcDeaBcDezBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLm";
1648 text[13]=
"aBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLmN";
1649 text[14]=
"aBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDezzzaBcDeFgHiJkLmNo";
1650 text[15]=
"aBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLmNoP";
1659 needle[6]=
"aBcDeFg";
1660 needle[7]=
"aBcDeFgH";
1661 needle[8]=
"aBcDeFgHi";
1662 needle[9]=
"aBcDeFgHiJ";
1663 needle[10]=
"aBcDeFgHiJk";
1664 needle[11]=
"aBcDeFgHiJkL";
1665 needle[12]=
"aBcDeFgHiJkLm";
1666 needle[13]=
"aBcDeFgHiJkLmN";
1667 needle[14]=
"aBcDeFgHiJkLmNo";
1668 needle[15]=
"aBcDeFgHiJkLmNoP";
1671 uint8_t *found = NULL;
1672 printf(
"\nStats for text of greater length (text with a lot of partial matches, worst case for a basic search):\n");
1673 for (i = 0; i < 16; i++) {
1674 printf(
"Pattern length %d with BasicSearch:", i+1);
1675 found = BasicSearchWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1677 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
1680 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
1681 found = Bs2bmWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1683 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
1686 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
1687 found = BoyerMooreWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1689 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
1700 static int UtilSpmSearchStatsTest02(
void)
1703 text[0]=
"zzzzzzzzzzzzzzzzzza";
1704 text[1]=
"zzzzzzzzzzzzzzzzzzaB";
1705 text[2]=
"zzzzzzzzzzzzzzzzzzaBc";
1706 text[3]=
"zzzzzzzzzzzzzzzzzzaBcD";
1707 text[4]=
"zzzzzzzzzzzzzzzzzzaBcDe";
1708 text[5]=
"zzzzzzzzzzzzzzzzzzzzaBcDeF";
1709 text[6]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
1710 text[7]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgH";
1711 text[8]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
1712 text[9]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
1713 text[10]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
1714 text[11]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
1715 text[12]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
1716 text[13]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
1717 text[14]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
1718 text[15]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
1727 needle[6]=
"aBcDeFg";
1728 needle[7]=
"aBcDeFgH";
1729 needle[8]=
"aBcDeFgHi";
1730 needle[9]=
"aBcDeFgHiJ";
1731 needle[10]=
"aBcDeFgHiJk";
1732 needle[11]=
"aBcDeFgHiJkL";
1733 needle[12]=
"aBcDeFgHiJkLm";
1734 needle[13]=
"aBcDeFgHiJkLmN";
1735 needle[14]=
"aBcDeFgHiJkLmNo";
1736 needle[15]=
"aBcDeFgHiJkLmNoP";
1739 uint8_t *found = NULL;
1740 printf(
"\nStats for text of lower length:\n");
1741 for (i = 0; i < 16; i++) {
1742 printf(
"Pattern length %d with BasicSearch:", i+1);
1743 found = BasicSearchWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1745 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
1748 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
1749 found = Bs2bmWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1751 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
1754 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
1755 found = BoyerMooreWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1757 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
1766 static int UtilSpmSearchStatsTest03(
void)
1771 text[2]=
"zzzzzzaBc";
1772 text[3]=
"zzzzzzaBcD";
1773 text[4]=
"zzzzzzaBcDe";
1774 text[5]=
"zzzzzzzzaBcDeF";
1775 text[6]=
"zzzzzzzzaBcDeFg";
1776 text[7]=
"zzzzzzzzaBcDeFgH";
1777 text[8]=
"zzzzzzzzaBcDeFgHi";
1778 text[9]=
"zzzzzzzzaBcDeFgHiJ";
1779 text[10]=
"zzzzzzzzaBcDeFgHiJk";
1780 text[11]=
"zzzzzzzzaBcDeFgHiJkL";
1781 text[12]=
"zzzzzzzzaBcDeFgHiJkLm";
1782 text[13]=
"zzzzzzzzaBcDeFgHiJkLmN";
1783 text[14]=
"zzzzzzzzaBcDeFgHiJkLmNo";
1784 text[15]=
"zzzzzzzzaBcDeFgHiJkLmNoP";
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 lower length (badcase for):\n");
1807 for (i = 0; i < 16; i++) {
1808 printf(
"Pattern length %d with BasicSearch:", i+1);
1809 found = BasicSearchWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1811 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
1814 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
1815 found = Bs2bmWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1817 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
1820 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
1821 found = BoyerMooreWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1823 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
1834 static int UtilSpmSearchStatsTest04(
void)
1837 text[0]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzza";
1838 text[1]=
"aaaaaaaaazaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaazaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaazaaaaaaaaazaaaaaaaaaazaaaaaraaaaazaaaaaaazaaaaaaaaaaaaaazaaaaaaaazaaaaaaaaazaaaaaaaaaaaaB";
1839 text[2]=
"aBaBaBaBaBaBaBaBazaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBzBaBaBaBaBaBaBzBaBaBaBaBzBaBaBaBaBaBzBaBaBaBaBaBzBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBaBaBzBaBaBaBaBaBaBaBaBaBaBazaBaBaBaBaBaBaBazaBaBaBaBaBc";
1840 text[3]=
"aBcaBcaBcaBcaBczBcaBcaBzaBcaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBcaBcaBczBcaBcaBcaBcaBzaBcaBcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcazcaBcaBcaBcaBcaBcaBzaBcaBcaBcazcaBcaBcaBcaBcaBcD";
1841 text[4]=
"aBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDzBcDaBcDaBcDaBcDzBcDaBcDaBczaBcDaBcDaBczaBcDaBcDaBcDaBcDaBzDaBcDaBcDaBcDaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDaBcDaBzDaBcDaBcDaBcDaBzDaBcDaBcDaBzDaBcDaBcDaBcDaBcDaBcDaBczaBcDaBcDaBcDaBcDazcDaBcDaBcDaBcDaBcDzBcDaBcDaBcDaBcDaBcDaBcDe";
1842 text[5]=
"aBcDeaBcDeaBcDeazcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDezBcDeaBcDeaBcDzaBcDeaBcDeaBcDeazcDzaBcDeaBcDezBcDeaBzDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBczeaBcDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDzaBcDeaBcDezBcDeaBcDezBcDeaBczeaBcDeaBcDeaBzDeaBcDezBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeF";
1843 text[6]=
"aBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBczzaBcDeaBcDeaBcDzazcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDeaBczeaBcDezzzaBcDeFg";
1844 text[7]=
"aBcDeaBczeaBcDzaBcDezBcDeaBcDeaBcDeaBcDzaBzDeaBcDeaBcDeaBzDzaBcDeaBcDeazcDeaBcDzaBcDeaBczeaBcDeaBcDeaBzDzaBcDeaBcDeaBcDezBcDzaBcDeaBzDeaBcDeaBcDezBcDzaBcDeaBcDeaBzDeaBcDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBrDeaBcDeaBcDezzzaBcDeFgH";
1845 text[8]=
"aBcDeaBcDeaBczzaBcDeazcDeaBcDezBcDeaBcDzaBcDeaBcDeaBcDeaBczzaBcDeaBcDeaBczeaBcDeaBcDzzBcDeaBcDeaBcDzaBczeaBcDeaBcDzaBcDeaBczeaBcDeaBcDeaBzDeaBcDeaBcDeaBzDeaBcDeaBcDzaBcDeaBcDeazcDeaBcDeaBcDzaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeazcDeaBcDeaBcDeaBczeaBcDeaBzDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHi";
1846 text[9]=
"aBcDeaBcDzaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeazcDeaBcDeaBcDzzBcDeaBcDeaBczeaBcDzaBcDezBcDeaBczeaBcDzaBcDezBcDeaBcDzaBczeaBcDeaBcDzaBcDeazcDeaBcDeaBcDzaBczeaBcDeaBcDzaBzDeaBcDeaBczeaBcDeaBcDzaBcDeaBcDeaBzDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDeaBzDeaBcDeaBcDeazcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJ";
1847 text[10]=
"aBcDeaBcDeaBczeaBcDzaBczeaBcDeaBczeaBcDeaBcDzaBcDeaBcDeazcDeaBcDeaBcDeaBzDzaBcDeazcDeaBcDeazcDeaBcDzaBcDeazcDeaBcDeaBczzaBcDeaBcDeaBzDeaBcDeaBcDzaBczeaBcDeaBcDeaBcDeaBczeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDezBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDezBcDeaBcDeaBcDeaBzDeaBcDeaBcDezzzaBcDeFgHiJk";
1848 text[11]=
"aBcDeaBcDeaBcDeaBcDeaBzDeaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDeazcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDzaBcDzaBcDeaBcDeaBcDeaBcDzzBcDeaBcDeaBcDeaBcDzaBcDzaBcDeaBzDeaBcDeaBcDezBcDeaBcDeazcDeaBcDeaBcDezBcDeaBcDeaBcDeazcDeaBcDeaBzDeaBcDeaBczeaBcDeazcDeaBcDezBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkL";
1849 text[12]=
"aBcDeaBcDeaBcDeaBcDeaBzDeaBcDeaBzDeaBcDeaBcDezBcDeaBcDeazcDeaBcDeaBcDeazcDeaBcDeaBczeaBcDeaBcDeaBcDezBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLm";
1850 text[13]=
"aBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLmN";
1851 text[14]=
"aBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDezzzaBcDeFgHiJkLmNo";
1852 text[15]=
"aBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDzaBcDeaBcDeaBcDeaBcDezzzaBcDeFgHiJkLmNoP";
1862 needle[6]=
"aBcDeFg";
1863 needle[7]=
"aBcDeFgH";
1864 needle[8]=
"aBcDeFgHi";
1865 needle[9]=
"aBcDeFgHiJ";
1866 needle[10]=
"aBcDeFgHiJk";
1867 needle[11]=
"aBcDeFgHiJkL";
1868 needle[12]=
"aBcDeFgHiJkLm";
1869 needle[13]=
"aBcDeFgHiJkLmN";
1870 needle[14]=
"aBcDeFgHiJkLmNo";
1871 needle[15]=
"aBcDeFgHiJkLmNoP";
1874 uint8_t *found = NULL;
1875 printf(
"\nStats for text of greater length:\n");
1876 for (i = 0; i < 16; i++) {
1877 printf(
"Pattern length %d with BasicSearch (Building Context):", i + 1);
1878 found = BasicSearchCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1880 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
1883 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i + 1);
1884 found = Bs2bmCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1886 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
1889 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i + 1);
1890 found = BoyerMooreCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1892 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
1895 printf(
"Pattern length %d with SpmSearch (Building Context):", i + 1);
1896 found = RawCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1898 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
1909 static int UtilSpmSearchStatsTest05(
void)
1912 text[0]=
"zzzzzzzzzzzzzzzzzza";
1913 text[1]=
"zzzzzzzzzzzzzzzzzzaB";
1914 text[2]=
"zzzzzzzzzzzzzzzzzzaBc";
1915 text[3]=
"zzzzzzzzzzzzzzzzzzaBcD";
1916 text[4]=
"zzzzzzzzzzzzzzzzzzaBcDe";
1917 text[5]=
"zzzzzzzzzzzzzzzzzzzzaBcDeF";
1918 text[6]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
1919 text[7]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgH";
1920 text[8]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
1921 text[9]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
1922 text[10]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
1923 text[11]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
1924 text[12]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
1925 text[13]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
1926 text[14]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
1927 text[15]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
1936 needle[6]=
"aBcDeFg";
1937 needle[7]=
"aBcDeFgH";
1938 needle[8]=
"aBcDeFgHi";
1939 needle[9]=
"aBcDeFgHiJ";
1940 needle[10]=
"aBcDeFgHiJk";
1941 needle[11]=
"aBcDeFgHiJkL";
1942 needle[12]=
"aBcDeFgHiJkLm";
1943 needle[13]=
"aBcDeFgHiJkLmN";
1944 needle[14]=
"aBcDeFgHiJkLmNo";
1945 needle[15]=
"aBcDeFgHiJkLmNoP";
1948 uint8_t *found = NULL;
1949 printf(
"\nStats for text of lower length:\n");
1950 for (i = 0; i < 16; i++) {
1951 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
1952 found = BasicSearchCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1954 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
1957 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
1958 found = Bs2bmCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1960 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
1963 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
1964 found = BoyerMooreCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1966 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
1975 static int UtilSpmSearchStatsTest06(
void)
1978 text[0]=
"zzzzkzzzzzzzkzzzzzza";
1979 text[1]=
"BBBBkBBBBBBBkBBBBBaB";
1980 text[2]=
"BcBckcBcBcBckcBcBcaBc";
1981 text[3]=
"BcDBkDBcDBcDkcDBcDaBcD";
1982 text[4]=
"BcDekcDeBcDekcDezzaBcDe";
1992 uint8_t *found = NULL;
1993 printf(
"\nStats for text of lower length (badcase for):\n");
1994 for (i = 0; i < 5; i++) {
1995 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
1996 found = BasicSearchCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
1998 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
2001 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
2002 found = Bs2bmCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2004 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
2007 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
2008 found = BoyerMooreCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2010 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
2018 static int UtilSpmSearchStatsTest07(
void)
2035 uint8_t *found = NULL;
2036 printf(
"\nStats for text of real lower length (badcase for):\n");
2037 for (i = 0; i < 5; i++) {
2038 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
2039 found = BasicSearchCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2041 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
2044 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
2045 found = Bs2bmCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2047 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
2050 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
2051 found = BoyerMooreCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2053 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
2064 static int UtilSpmNocaseSearchStatsTest01(
void)
2067 text[0]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzza";
2068 text[1]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaB";
2069 text[2]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBc";
2070 text[3]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcD";
2071 text[4]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDe";
2072 text[5]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeF";
2073 text[6]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFg";
2074 text[7]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgH";
2075 text[8]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
2076 text[9]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
2077 text[10]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
2078 text[11]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
2079 text[12]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
2080 text[13]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
2081 text[14]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
2082 text[15]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
2091 needle[6]=
"aBcDeFg";
2092 needle[7]=
"aBcDeFgH";
2093 needle[8]=
"aBcDeFgHi";
2094 needle[9]=
"aBcDeFgHiJ";
2095 needle[10]=
"aBcDeFgHiJk";
2096 needle[11]=
"aBcDeFgHiJkL";
2097 needle[12]=
"aBcDeFgHiJkLm";
2098 needle[13]=
"aBcDeFgHiJkLmN";
2099 needle[14]=
"aBcDeFgHiJkLmNo";
2100 needle[15]=
"aBcDeFgHiJkLmNoP";
2103 uint8_t *found = NULL;
2104 printf(
"\nStats for text of greater length:\n");
2105 for (i = 0; i < 16; i++) {
2106 printf(
"Pattern length %d with BasicSearch:", i+1);
2107 found = BasicSearchNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2109 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
2112 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
2113 found = Bs2bmNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2115 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
2118 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
2119 found = BoyerMooreNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2121 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
2129 static int UtilSpmNocaseSearchStatsTest02(
void)
2132 text[0]=
"zzzzzzzzzzzzzzzzzza";
2133 text[1]=
"zzzzzzzzzzzzzzzzzzaB";
2134 text[2]=
"zzzzzzzzzzzzzzzzzzaBc";
2135 text[3]=
"zzzzzzzzzzzzzzzzzzaBcD";
2136 text[4]=
"zzzzzzzzzzzzzzzzzzaBcDe";
2137 text[5]=
"zzzzzzzzzzzzzzzzzzzzaBcDeF";
2138 text[6]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
2139 text[7]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgH";
2140 text[8]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
2141 text[9]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
2142 text[10]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
2143 text[11]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
2144 text[12]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
2145 text[13]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
2146 text[14]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
2147 text[15]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
2156 needle[6]=
"aBcDeFg";
2157 needle[7]=
"aBcDeFgH";
2158 needle[8]=
"aBcDeFgHi";
2159 needle[9]=
"aBcDeFgHiJ";
2160 needle[10]=
"aBcDeFgHiJk";
2161 needle[11]=
"aBcDeFgHiJkL";
2162 needle[12]=
"aBcDeFgHiJkLm";
2163 needle[13]=
"aBcDeFgHiJkLmN";
2164 needle[14]=
"aBcDeFgHiJkLmNo";
2165 needle[15]=
"aBcDeFgHiJkLmNoP";
2168 uint8_t *found = NULL;
2169 printf(
"\nStats for text of lower length:\n");
2170 for (i = 0; i < 16; i++) {
2171 printf(
"Pattern length %d with BasicSearch:", i+1);
2172 found = BasicSearchNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2174 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
2177 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
2178 found = Bs2bmNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2180 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
2183 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
2184 found = BoyerMooreNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2186 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
2195 static int UtilSpmNocaseSearchStatsTest03(
void)
2198 text[0]=
"zzzzkzzzzzzzkzzzzzza";
2199 text[1]=
"BBBBkBBBBBBBkBBBBBaB";
2200 text[2]=
"BcBckcBcBcBckcBcBcaBc";
2201 text[3]=
"BcDBkDBcDBcDkcDBcDaBcD";
2202 text[4]=
"BcDekcDeBcDekcDezzaBcDe";
2212 uint8_t *found = NULL;
2213 printf(
"\nStats for text of lower length (badcase for):\n");
2214 for (i = 0; i < 5; i++) {
2215 printf(
"Pattern length %d with BasicSearch:", i+1);
2216 found = BasicSearchNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2218 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
2221 printf(
"Pattern length %d with Bs2BmSearch:", i+1);
2222 found = Bs2bmNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2224 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
2227 printf(
"Pattern length %d with BoyerMooreSearch:", i+1);
2228 found = BoyerMooreNocaseWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2230 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
2241 static int UtilSpmNocaseSearchStatsTest04(
void)
2244 text[0]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzza";
2245 text[1]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaB";
2246 text[2]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBc";
2247 text[3]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcD";
2248 text[4]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDe";
2249 text[5]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeF";
2250 text[6]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFg";
2251 text[7]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgH";
2252 text[8]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
2253 text[9]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
2254 text[10]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
2255 text[11]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
2256 text[12]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
2257 text[13]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
2258 text[14]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
2259 text[15]=
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
2268 needle[6]=
"aBcDeFg";
2269 needle[7]=
"aBcDeFgH";
2270 needle[8]=
"aBcDeFgHi";
2271 needle[9]=
"aBcDeFgHiJ";
2272 needle[10]=
"aBcDeFgHiJk";
2273 needle[11]=
"aBcDeFgHiJkL";
2274 needle[12]=
"aBcDeFgHiJkLm";
2275 needle[13]=
"aBcDeFgHiJkLmN";
2276 needle[14]=
"aBcDeFgHiJkLmNo";
2277 needle[15]=
"aBcDeFgHiJkLmNoP";
2280 uint8_t *found = NULL;
2281 printf(
"\nStats for text of greater length:\n");
2282 for (i = 0; i < 16; i++) {
2283 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
2284 found = BasicSearchNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2286 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
2289 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
2290 found = Bs2bmNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2292 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
2295 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
2296 found = BoyerMooreNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2298 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
2306 static int UtilSpmNocaseSearchStatsTest05(
void)
2309 text[0]=
"zzzzzzzzzzzzzzzzzza";
2310 text[1]=
"zzzzzzzzzzzzzzzzzzaB";
2311 text[2]=
"zzzzzzzzzzzzzzzzzzaBc";
2312 text[3]=
"zzzzzzzzzzzzzzzzzzaBcD";
2313 text[4]=
"zzzzzzzzzzzzzzzzzzaBcDe";
2314 text[5]=
"zzzzzzzzzzzzzzzzzzzzaBcDeF";
2315 text[6]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFg";
2316 text[7]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgH";
2317 text[8]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHi";
2318 text[9]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJ";
2319 text[10]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJk";
2320 text[11]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkL";
2321 text[12]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLm";
2322 text[13]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmN";
2323 text[14]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNo";
2324 text[15]=
"zzzzzzzzzzzzzzzzzzzzaBcDeFgHiJkLmNoP";
2333 needle[6]=
"aBcDeFg";
2334 needle[7]=
"aBcDeFgH";
2335 needle[8]=
"aBcDeFgHi";
2336 needle[9]=
"aBcDeFgHiJ";
2337 needle[10]=
"aBcDeFgHiJk";
2338 needle[11]=
"aBcDeFgHiJkL";
2339 needle[12]=
"aBcDeFgHiJkLm";
2340 needle[13]=
"aBcDeFgHiJkLmN";
2341 needle[14]=
"aBcDeFgHiJkLmNo";
2342 needle[15]=
"aBcDeFgHiJkLmNoP";
2345 uint8_t *found = NULL;
2346 printf(
"\nStats for text of lower length:\n");
2347 for (i = 0; i < 16; i++) {
2348 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
2349 found = BasicSearchNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2351 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
2354 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
2355 found = Bs2bmNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2357 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
2360 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
2361 found = BoyerMooreNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2363 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
2372 static int UtilSpmNocaseSearchStatsTest06(
void)
2375 text[0]=
"zzzzkzzzzzzzkzzzzzza";
2376 text[1]=
"BBBBkBBBBBBBkBBBBBaB";
2377 text[2]=
"BcBckcBcBcBckcBcBcaBc";
2378 text[3]=
"BcDBkDBcDBcDkcDBcDaBcD";
2379 text[4]=
"BcDekcDeBcDekcDezzaBcDe";
2389 uint8_t *found = NULL;
2390 printf(
"\nStats for text of lower length (badcase for):\n");
2391 for (i = 0; i < 5; i++) {
2392 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
2393 found = BasicSearchNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2395 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
2398 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
2399 found = Bs2bmNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2401 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
2404 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
2405 found = BoyerMooreNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2407 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
2415 static int UtilSpmNocaseSearchStatsTest07(
void)
2432 uint8_t *found = NULL;
2433 printf(
"\nStats for text of real lower length (badcase for):\n");
2434 for (i = 0; i < 5; i++) {
2435 printf(
"Pattern length %d with BasicSearch (Building Context):", i+1);
2436 found = BasicSearchNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2438 printf(
"Error1 searching for %s in text %s\n", needle[i], text[i]);
2441 printf(
"Pattern length %d with Bs2BmSearch (Building Context):", i+1);
2442 found = Bs2bmNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2444 printf(
"Error2 searching for %s in text %s\n", needle[i], text[i]);
2447 printf(
"Pattern length %d with BoyerMooreSearch (Building Context):", i+1);
2448 found = BoyerMooreNocaseCtxWrapper((uint8_t *)text[i], (uint8_t *)needle[i], STATS_TIMES);
2450 printf(
"Error3 searching for %s in text %s\n", needle[i], text[i]);
2461 #define SPM_NO_MATCH UINT32_MAX
2474 static int SpmTestSearch(
const SpmTestData *d, uint8_t matcher)
2480 uint8_t *found = NULL;
2483 if (global_thread_ctx == NULL) {
2496 if (thread_ctx == NULL) {
2503 if (found == NULL) {
2505 printf(
" should have matched at %" PRIu32
" but didn't\n",
2510 uint32_t
offset = (uint32_t)(found - (
const uint8_t *)d->
haystack);
2512 printf(
" should have matched at %" PRIu32
2513 " but matched at %" PRIu32
"\n",
2526 static int SpmSearchTest01(
void) {
2535 {
"a", 1,
"a", 1, 0, 0},
2536 {
"a", 1,
"A", 1, 1, 0},
2537 {
"A", 1,
"A", 1, 0, 0},
2538 {
"A", 1,
"a", 1, 1, 0},
2542 {
"\x00", 1,
"test\x00test", 9, 0, 4},
2544 {
"\n", 1,
"new line\n", 9, 0, 8},
2545 {
"\n", 1,
"new line\x00\n", 10, 0, 9},
2546 {
"\xff", 1,
"abcdef\xff", 7, 0, 6},
2547 {
"\xff", 1,
"abcdef\xff", 7, 1, 6},
2548 {
"$", 1,
"dollar$", 7, 0, 6},
2549 {
"^", 1,
"caret^", 6, 0, 5},
2551 {
"Suricata", 8,
"This is a Suricata test", 23, 0, 10},
2552 {
"Suricata", 8,
"This is a suricata test", 23, 1, 10},
2553 {
"Suricata", 8,
"This is a suriCATA test", 23, 1, 10},
2554 {
"suricata", 8,
"This is a Suricata test", 23, 0,
SPM_NO_MATCH},
2555 {
"Suricata", 8,
"This is a Suricat_ test", 23, 0,
SPM_NO_MATCH},
2556 {
"Suricata", 8,
"This is a _uricata test", 23, 0,
SPM_NO_MATCH},
2558 {
"foo", 3,
"foofoofoo", 9, 0, 0},
2559 {
"foo", 3,
"_foofoofoo", 9, 0, 1},
2560 {
"FOO", 3,
"foofoofoo", 9, 1, 0},
2561 {
"FOO", 3,
"_foofoofoo", 9, 1, 1},
2562 {
"FOO", 3,
"foo Foo FOo fOo foO FOO", 23, 0, 20},
2563 {
"foo", 3,
"Foo FOo fOo foO FOO foo", 23, 0, 20},
2568 if (
m->name == NULL) {
2571 for (uint32_t i = 0; i <
sizeof(data) /
sizeof(data[0]); i++) {
2573 FAIL_IF(SpmTestSearch(d, matcher) == 0);
2580 static int SpmSearchTest02(
void) {
2587 static const char* needles[] = {
2589 "a",
"b",
"c",
":",
"/",
"\x7f",
"\xff",
2591 "aa",
"aaa",
"aaaaaaaaaaaaaaaaaaaaaaa",
2593 "suricata",
"meerkat",
"aardvark",
"raptor",
"marmot",
"lemming",
2595 "Suricata",
"CAPS LOCK",
"mIxEd cAsE",
2603 if (
m->name == NULL) {
2606 printf(
"matcher: %s\n",
m->name);
2611 for (i = 0; i <
sizeof(needles) /
sizeof(needles[0]); i++) {
2612 const char *needle = needles[i];
2614 for (prefix = 0; prefix < 32; prefix++) {
2617 uint16_t haystack_len = prefix + d.
needle_len;
2618 char *haystack =
SCMalloc(haystack_len);
2619 if (haystack == NULL) {
2620 printf(
"alloc failure\n");
2623 memset(haystack,
' ', haystack_len);
2631 if (SpmTestSearch(&d, matcher) == 0) {
2632 printf(
" test %" PRIu32
": fail (case-sensitive)\n", i);
2639 for (j = 0; j < haystack_len; j++) {
2642 if (SpmTestSearch(&d, matcher) == 0) {
2643 printf(
" test %" PRIu32
": fail (case-insensitive)\n", i);
2650 printf(
" %" PRIu32
" tests passed\n", i);
2660 UtRegisterTest(
"UtilSpmBasicSearchTest01", UtilSpmBasicSearchTest01);
2662 UtilSpmBasicSearchNocaseTest01);
2664 UtRegisterTest(
"UtilSpmBs2bmSearchTest01", UtilSpmBs2bmSearchTest01);
2666 UtilSpmBs2bmSearchNocaseTest01);
2669 UtilSpmBoyerMooreSearchTest01);
2671 UtilSpmBoyerMooreSearchNocaseTest01);
2673 UtilSpmBoyerMooreSearchNocaseTestIssue130);
2675 UtRegisterTest(
"UtilSpmBs2bmSearchTest02", UtilSpmBs2bmSearchTest02);
2677 UtilSpmBs2bmSearchNocaseTest02);
2679 UtRegisterTest(
"UtilSpmBasicSearchTest02", UtilSpmBasicSearchTest02);
2681 UtilSpmBasicSearchNocaseTest02);
2684 UtilSpmBoyerMooreSearchTest02);
2686 UtilSpmBoyerMooreSearchNocaseTest02);
2689 UtRegisterTest(
"UtilSpmSearchOffsetsTest01", UtilSpmSearchOffsetsTest01);
2691 UtilSpmSearchOffsetsNocaseTest01);
2697 #ifdef ENABLE_SEARCH_STATS
2699 UtRegisterTest(
"UtilSpmSearchStatsTest01", UtilSpmSearchStatsTest01);
2700 UtRegisterTest(
"UtilSpmSearchStatsTest02", UtilSpmSearchStatsTest02);
2701 UtRegisterTest(
"UtilSpmSearchStatsTest03", UtilSpmSearchStatsTest03);
2704 UtilSpmNocaseSearchStatsTest01);
2706 UtilSpmNocaseSearchStatsTest02);
2708 UtilSpmNocaseSearchStatsTest03);
2711 UtRegisterTest(
"UtilSpmSearchStatsTest04", UtilSpmSearchStatsTest04);
2712 UtRegisterTest(
"UtilSpmSearchStatsTest05", UtilSpmSearchStatsTest05);
2713 UtRegisterTest(
"UtilSpmSearchStatsTest06", UtilSpmSearchStatsTest06);
2714 UtRegisterTest(
"UtilSpmSearchStatsTest07", UtilSpmSearchStatsTest07);
2717 UtilSpmNocaseSearchStatsTest04);
2719 UtilSpmNocaseSearchStatsTest05);
2721 UtilSpmNocaseSearchStatsTest06);
2723 UtilSpmNocaseSearchStatsTest07);