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 }