This source file includes following definitions.
- main
 
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 
  17 
  18 
  19 #include <config.h>
  20 
  21 #include "c-strcasestr.h"
  22 
  23 #include <stdlib.h>
  24 #include <string.h>
  25 
  26 #include "macros.h"
  27 
  28 int
  29 main ()
     
  30 {
  31   {
  32     const char input[] = "foo";
  33     const char *result = c_strcasestr (input, "");
  34     ASSERT (result == input);
  35   }
  36 
  37   {
  38     const char input[] = "foo";
  39     const char *result = c_strcasestr (input, "O");
  40     ASSERT (result == input + 1);
  41   }
  42 
  43   {
  44     const char input[] = "ABC ABCDAB ABCDABCDABDE";
  45     const char *result = c_strcasestr (input, "ABCDaBD");
  46     ASSERT (result == input + 15);
  47   }
  48 
  49   {
  50     const char input[] = "ABC ABCDAB ABCDABCDABDE";
  51     const char *result = c_strcasestr (input, "ABCDaBE");
  52     ASSERT (result == NULL);
  53   }
  54 
  55   {
  56     const char input[] = "ABC ABCDAB ABCDABCDABDE";
  57     const char *result = c_strcasestr (input, "ABCDaBCD");
  58     ASSERT (result == input + 11);
  59   }
  60 
  61   
  62   {
  63     const char input[] = "F_BD_CE_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD"
  64                          "_C3_88_20_EF_BF_BD_EF_BF_BD_EF_BF_BD"
  65                          "_C3_A7_20_EF_BF_BD";
  66     const char need[] = "_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD";
  67     const char *result = c_strcasestr (input, need);
  68     ASSERT (result == NULL);
  69   }
  70   {
  71     const char input[] = "F_BD_CE_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD"
  72                          "_C3_88_20_EF_BF_BD_EF_BF_BD_EF_BF_BD"
  73                          "_C3_A7_20_EF_BF_BD_DA_B5_C2_A6_20"
  74                          "_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD";
  75     const char need[] = "_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD";
  76     const char *result = c_strcasestr (input, need);
  77     ASSERT (result == input + 115);
  78   }
  79 
  80   
  81 
  82   {
  83     size_t repeat = 10000;
  84     size_t m = 1000000;
  85     const char *needle =
  86       "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
  87       "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaAAAAaaaaaaa"
  88       "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
  89     char *haystack = (char *) malloc (m + 1);
  90     if (haystack != NULL)
  91       {
  92         memset (haystack, 'A', m);
  93         haystack[0] = 'B';
  94         haystack[m] = '\0';
  95 
  96         for (; repeat > 0; repeat--)
  97           {
  98             ASSERT (c_strcasestr (haystack, needle) == haystack + 1);
  99           }
 100 
 101         free (haystack);
 102       }
 103   }
 104 
 105   
 106 
 107   {
 108     size_t repeat = 10000;
 109     size_t m = 1000000;
 110     const char *haystack =
 111       "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
 112       "ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB";
 113     char *needle = (char *) malloc (m + 1);
 114     if (needle != NULL)
 115       {
 116         memset (needle, 'A', m);
 117         needle[m] = '\0';
 118 
 119         for (; repeat > 0; repeat--)
 120           {
 121             ASSERT (c_strcasestr (haystack, needle) == NULL);
 122           }
 123 
 124         free (needle);
 125       }
 126   }
 127 
 128   
 129   {
 130     size_t m = 1000000;
 131     char *haystack = (char *) malloc (2 * m + 2);
 132     char *needle = (char *) malloc (m + 2);
 133     if (haystack != NULL && needle != NULL)
 134       {
 135         const char *result;
 136 
 137         memset (haystack, 'A', 2 * m);
 138         haystack[2 * m] = 'B';
 139         haystack[2 * m + 1] = '\0';
 140 
 141         memset (needle, 'a', m);
 142         needle[m] = 'B';
 143         needle[m + 1] = '\0';
 144 
 145         result = c_strcasestr (haystack, needle);
 146         ASSERT (result == haystack + m);
 147       }
 148     free (needle);
 149     free (haystack);
 150   }
 151 
 152   {
 153     
 154 
 155 
 156 
 157     const char *haystack =
 158       "\n"
 159       "with_build_libsubdir\n"
 160       "with_local_prefix\n"
 161       "with_gxx_include_dir\n"
 162       "with_cpp_install_dir\n"
 163       "enable_generated_files_in_srcdir\n"
 164       "with_gnu_ld\n"
 165       "with_ld\n"
 166       "with_demangler_in_ld\n"
 167       "with_gnu_as\n"
 168       "with_as\n"
 169       "enable_largefile\n"
 170       "enable_werror_always\n"
 171       "enable_checking\n"
 172       "enable_coverage\n"
 173       "enable_gather_detailed_mem_stats\n"
 174       "enable_build_with_cxx\n"
 175       "with_stabs\n"
 176       "enable_multilib\n"
 177       "enable___cxa_atexit\n"
 178       "enable_decimal_float\n"
 179       "enable_fixed_point\n"
 180       "enable_threads\n"
 181       "enable_tls\n"
 182       "enable_objc_gc\n"
 183       "with_dwarf2\n"
 184       "enable_shared\n"
 185       "with_build_sysroot\n"
 186       "with_sysroot\n"
 187       "with_specs\n"
 188       "with_pkgversion\n"
 189       "with_bugurl\n"
 190       "enable_languages\n"
 191       "with_multilib_list\n";
 192     const char *needle = "\n"
 193       "with_GNU_ld\n";
 194     const char* p = c_strcasestr (haystack, needle);
 195     ASSERT (p - haystack == 114);
 196   }
 197 
 198   {
 199     
 200     const char *haystack = "..wi.D.";
 201     const char *needle = ".d.";
 202     const char* p = c_strcasestr (haystack, needle);
 203     ASSERT (p - haystack == 4);
 204   }
 205 
 206   {
 207     
 208 
 209 
 210 
 211 
 212 
 213     const char *needle = "\nwith_gnu_ld-extend-to-len-32-b\n";
 214     const char *h =
 215       "\n"
 216       "with_build_libsubdir\n"
 217       "with_local_prefix\n"
 218       "with_gxx_include_dir\n"
 219       "with_cpp_install_dir\n"
 220       "with_e_\n"
 221       "..............................\n"
 222       "with_FGHIJKLMNOPQRSTUVWXYZ\n"
 223       "with_567890123456789\n"
 224       "with_multilib_list\n";
 225     size_t h_len = strlen (h);
 226     char *haystack = malloc (h_len + 1);
 227     size_t i;
 228     ASSERT (haystack);
 229     for (i = 0; i < h_len - strlen (needle); i++)
 230       {
 231         const char *p;
 232         memcpy (haystack, h, h_len + 1);
 233         memcpy (haystack + i, needle, strlen (needle) + 1);
 234         p = c_strcasestr (haystack, needle);
 235         ASSERT (p);
 236         ASSERT (p - haystack == i);
 237       }
 238     free (haystack);
 239   }
 240 
 241   
 242   {
 243     size_t m = 1024;
 244     char *haystack = (char *) malloc (2 * m + 1);
 245     char *needle = (char *) malloc (m + 1);
 246     if (haystack != NULL && needle != NULL)
 247       {
 248         const char *p;
 249         haystack[0] = 'x';
 250         memset (haystack + 1, ' ', m - 1);
 251         memset (haystack + m, 'x', m);
 252         haystack[2 * m] = '\0';
 253         memset (needle, 'X', m);
 254         needle[m] = '\0';
 255         p = c_strcasestr (haystack, needle);
 256         ASSERT (p);
 257         ASSERT (p - haystack == m);
 258       }
 259     free (needle);
 260     free (haystack);
 261   }
 262 
 263   return 0;
 264 }