Lines Matching refs:test

31 test(const S& s, typename S::size_type pos, typename S::size_type n1,
48 test(S(""), 0, 0, "", 0, 0);
49 test(S(""), 0, 0, "abcde", 0, 0);
50 test(S(""), 0, 0, "abcde", 1, -1);
51 test(S(""), 0, 0, "abcde", 2, -2);
52 test(S(""), 0, 0, "abcde", 4, -4);
53 test(S(""), 0, 0, "abcde", 5, -5);
54 test(S(""), 0, 0, "abcdefghij", 0, 0);
55 test(S(""), 0, 0, "abcdefghij", 1, -1);
56 test(S(""), 0, 0, "abcdefghij", 5, -5);
57 test(S(""), 0, 0, "abcdefghij", 9, -9);
58 test(S(""), 0, 0, "abcdefghij", 10, -10);
59 test(S(""), 0, 0, "abcdefghijklmnopqrst", 0, 0);
60 test(S(""), 0, 0, "abcdefghijklmnopqrst", 1, -1);
61 test(S(""), 0, 0, "abcdefghijklmnopqrst", 10, -10);
62 test(S(""), 0, 0, "abcdefghijklmnopqrst", 19, -19);
63 test(S(""), 0, 0, "abcdefghijklmnopqrst", 20, -20);
64 test(S(""), 0, 1, "", 0, 0);
65 test(S(""), 0, 1, "abcde", 0, 0);
66 test(S(""), 0, 1, "abcde", 1, -1);
67 test(S(""), 0, 1, "abcde", 2, -2);
68 test(S(""), 0, 1, "abcde", 4, -4);
69 test(S(""), 0, 1, "abcde", 5, -5);
70 test(S(""), 0, 1, "abcdefghij", 0, 0);
71 test(S(""), 0, 1, "abcdefghij", 1, -1);
72 test(S(""), 0, 1, "abcdefghij", 5, -5);
73 test(S(""), 0, 1, "abcdefghij", 9, -9);
74 test(S(""), 0, 1, "abcdefghij", 10, -10);
75 test(S(""), 0, 1, "abcdefghijklmnopqrst", 0, 0);
76 test(S(""), 0, 1, "abcdefghijklmnopqrst", 1, -1);
77 test(S(""), 0, 1, "abcdefghijklmnopqrst", 10, -10);
78 test(S(""), 0, 1, "abcdefghijklmnopqrst", 19, -19);
79 test(S(""), 0, 1, "abcdefghijklmnopqrst", 20, -20);
80 test(S(""), 1, 0, "", 0, 0);
81 test(S(""), 1, 0, "abcde", 0, 0);
82 test(S(""), 1, 0, "abcde", 1, 0);
83 test(S(""), 1, 0, "abcde", 2, 0);
84 test(S(""), 1, 0, "abcde", 4, 0);
85 test(S(""), 1, 0, "abcde", 5, 0);
86 test(S(""), 1, 0, "abcdefghij", 0, 0);
87 test(S(""), 1, 0, "abcdefghij", 1, 0);
88 test(S(""), 1, 0, "abcdefghij", 5, 0);
89 test(S(""), 1, 0, "abcdefghij", 9, 0);
90 test(S(""), 1, 0, "abcdefghij", 10, 0);
91 test(S(""), 1, 0, "abcdefghijklmnopqrst", 0, 0);
92 test(S(""), 1, 0, "abcdefghijklmnopqrst", 1, 0);
93 test(S(""), 1, 0, "abcdefghijklmnopqrst", 10, 0);
94 test(S(""), 1, 0, "abcdefghijklmnopqrst", 19, 0);
95 test(S(""), 1, 0, "abcdefghijklmnopqrst", 20, 0);
96 test(S("abcde"), 0, 0, "", 0, 0);
97 test(S("abcde"), 0, 0, "abcde", 0, 0);
98 test(S("abcde"), 0, 0, "abcde", 1, -1);
99 test(S("abcde"), 0, 0, "abcde", 2, -2);
100 test(S("abcde"), 0, 0, "abcde", 4, -4);
101 test(S("abcde"), 0, 0, "abcde", 5, -5);
102 test(S("abcde"), 0, 0, "abcdefghij", 0, 0);
103 test(S("abcde"), 0, 0, "abcdefghij", 1, -1);
104 test(S("abcde"), 0, 0, "abcdefghij", 5, -5);
105 test(S("abcde"), 0, 0, "abcdefghij", 9, -9);
106 test(S("abcde"), 0, 0, "abcdefghij", 10, -10);
107 test(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 0, 0);
108 test(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 1, -1);
109 test(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 10, -10);
110 test(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 19, -19);
111 test(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 20, -20);
112 test(S("abcde"), 0, 1, "", 0, 1);
113 test(S("abcde"), 0, 1, "abcde", 0, 1);
114 test(S("abcde"), 0, 1, "abcde", 1, 0);
115 test(S("abcde"), 0, 1, "abcde", 2, -1);
116 test(S("abcde"), 0, 1, "abcde", 4, -3);
117 test(S("abcde"), 0, 1, "abcde", 5, -4);
118 test(S("abcde"), 0, 1, "abcdefghij", 0, 1);
119 test(S("abcde"), 0, 1, "abcdefghij", 1, 0);
120 test(S("abcde"), 0, 1, "abcdefghij", 5, -4);
121 test(S("abcde"), 0, 1, "abcdefghij", 9, -8);
122 test(S("abcde"), 0, 1, "abcdefghij", 10, -9);
123 test(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 0, 1);
124 test(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 1, 0);
125 test(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 10, -9);
126 test(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 19, -18);
127 test(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 20, -19);
128 test(S("abcde"), 0, 2, "", 0, 2);
129 test(S("abcde"), 0, 2, "abcde", 0, 2);
130 test(S("abcde"), 0, 2, "abcde", 1, 1);
131 test(S("abcde"), 0, 2, "abcde", 2, 0);
132 test(S("abcde"), 0, 2, "abcde", 4, -2);
133 test(S("abcde"), 0, 2, "abcde", 5, -3);
134 test(S("abcde"), 0, 2, "abcdefghij", 0, 2);
135 test(S("abcde"), 0, 2, "abcdefghij", 1, 1);
136 test(S("abcde"), 0, 2, "abcdefghij", 5, -3);
137 test(S("abcde"), 0, 2, "abcdefghij", 9, -7);
138 test(S("abcde"), 0, 2, "abcdefghij", 10, -8);
139 test(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 0, 2);
140 test(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 1, 1);
141 test(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 10, -8);
142 test(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 19, -17);
143 test(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 20, -18);
144 test(S("abcde"), 0, 4, "", 0, 4);
145 test(S("abcde"), 0, 4, "abcde", 0, 4);
146 test(S("abcde"), 0, 4, "abcde", 1, 3);
147 test(S("abcde"), 0, 4, "abcde", 2, 2);
153 test(S("abcde"), 0, 4, "abcde", 4, 0);
154 test(S("abcde"), 0, 4, "abcde", 5, -1);
155 test(S("abcde"), 0, 4, "abcdefghij", 0, 4);
156 test(S("abcde"), 0, 4, "abcdefghij", 1, 3);
157 test(S("abcde"), 0, 4, "abcdefghij", 5, -1);
158 test(S("abcde"), 0, 4, "abcdefghij", 9, -5);
159 test(S("abcde"), 0, 4, "abcdefghij", 10, -6);
160 test(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 0, 4);
161 test(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 1, 3);
162 test(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 10, -6);
163 test(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 19, -15);
164 test(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 20, -16);
165 test(S("abcde"), 0, 5, "", 0, 5);
166 test(S("abcde"), 0, 5, "abcde", 0, 5);
167 test(S("abcde"), 0, 5, "abcde", 1, 4);
168 test(S("abcde"), 0, 5, "abcde", 2, 3);
169 test(S("abcde"), 0, 5, "abcde", 4, 1);
170 test(S("abcde"), 0, 5, "abcde", 5, 0);
171 test(S("abcde"), 0, 5, "abcdefghij", 0, 5);
172 test(S("abcde"), 0, 5, "abcdefghij", 1, 4);
173 test(S("abcde"), 0, 5, "abcdefghij", 5, 0);
174 test(S("abcde"), 0, 5, "abcdefghij", 9, -4);
175 test(S("abcde"), 0, 5, "abcdefghij", 10, -5);
176 test(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 0, 5);
177 test(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 1, 4);
178 test(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 10, -5);
179 test(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 19, -14);
180 test(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 20, -15);
181 test(S("abcde"), 0, 6, "", 0, 5);
182 test(S("abcde"), 0, 6, "abcde", 0, 5);
183 test(S("abcde"), 0, 6, "abcde", 1, 4);
184 test(S("abcde"), 0, 6, "abcde", 2, 3);
185 test(S("abcde"), 0, 6, "abcde", 4, 1);
186 test(S("abcde"), 0, 6, "abcde", 5, 0);
187 test(S("abcde"), 0, 6, "abcdefghij", 0, 5);
188 test(S("abcde"), 0, 6, "abcdefghij", 1, 4);
189 test(S("abcde"), 0, 6, "abcdefghij", 5, 0);
190 test(S("abcde"), 0, 6, "abcdefghij", 9, -4);
191 test(S("abcde"), 0, 6, "abcdefghij", 10, -5);
192 test(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 0, 5);
193 test(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 1, 4);
194 test(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 10, -5);
195 test(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 19, -14);
196 test(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 20, -15);
197 test(S("abcde"), 1, 0, "", 0, 0);
198 test(S("abcde"), 1, 0, "abcde", 0, 0);
199 test(S("abcde"), 1, 0, "abcde", 1, -1);
200 test(S("abcde"), 1, 0, "abcde", 2, -2);
201 test(S("abcde"), 1, 0, "abcde", 4, -4);
202 test(S("abcde"), 1, 0, "abcde", 5, -5);
203 test(S("abcde"), 1, 0, "abcdefghij", 0, 0);
204 test(S("abcde"), 1, 0, "abcdefghij", 1, -1);
205 test(S("abcde"), 1, 0, "abcdefghij", 5, -5);
206 test(S("abcde"), 1, 0, "abcdefghij", 9, -9);
207 test(S("abcde"), 1, 0, "abcdefghij", 10, -10);
208 test(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 0, 0);
209 test(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 1, -1);
210 test(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 10, -10);
211 test(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 19, -19);
212 test(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 20, -20);
213 test(S("abcde"), 1, 1, "", 0, 1);
214 test(S("abcde"), 1, 1, "abcde", 0, 1);
215 test(S("abcde"), 1, 1, "abcde", 1, 1);
216 test(S("abcde"), 1, 1, "abcde", 2, 1);
217 test(S("abcde"), 1, 1, "abcde", 4, 1);
218 test(S("abcde"), 1, 1, "abcde", 5, 1);
219 test(S("abcde"), 1, 1, "abcdefghij", 0, 1);
220 test(S("abcde"), 1, 1, "abcdefghij", 1, 1);
221 test(S("abcde"), 1, 1, "abcdefghij", 5, 1);
222 test(S("abcde"), 1, 1, "abcdefghij", 9, 1);
223 test(S("abcde"), 1, 1, "abcdefghij", 10, 1);
224 test(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 0, 1);
225 test(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 1, 1);
226 test(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 10, 1);
227 test(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 19, 1);
228 test(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 20, 1);
229 test(S("abcde"), 1, 2, "", 0, 2);
230 test(S("abcde"), 1, 2, "abcde", 0, 2);
231 test(S("abcde"), 1, 2, "abcde", 1, 1);
232 test(S("abcde"), 1, 2, "abcde", 2, 1);
233 test(S("abcde"), 1, 2, "abcde", 4, 1);
234 test(S("abcde"), 1, 2, "abcde", 5, 1);
235 test(S("abcde"), 1, 2, "abcdefghij", 0, 2);
236 test(S("abcde"), 1, 2, "abcdefghij", 1, 1);
237 test(S("abcde"), 1, 2, "abcdefghij", 5, 1);
238 test(S("abcde"), 1, 2, "abcdefghij", 9, 1);
239 test(S("abcde"), 1, 2, "abcdefghij", 10, 1);
240 test(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 0, 2);
241 test(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 1, 1);
242 test(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 10, 1);
243 test(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 19, 1);
244 test(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 20, 1);
245 test(S("abcde"), 1, 3, "", 0, 3);
246 test(S("abcde"), 1, 3, "abcde", 0, 3);
247 test(S("abcde"), 1, 3, "abcde", 1, 1);
248 test(S("abcde"), 1, 3, "abcde", 2, 1);
249 test(S("abcde"), 1, 3, "abcde", 4, 1);
250 test(S("abcde"), 1, 3, "abcde", 5, 1);
251 test(S("abcde"), 1, 3, "abcdefghij", 0, 3);
252 test(S("abcde"), 1, 3, "abcdefghij", 1, 1);
258 test(S("abcde"), 1, 3, "abcdefghij", 5, 1);
259 test(S("abcde"), 1, 3, "abcdefghij", 9, 1);
260 test(S("abcde"), 1, 3, "abcdefghij", 10, 1);
261 test(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 0, 3);
262 test(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 1, 1);
263 test(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 10, 1);
264 test(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 19, 1);
265 test(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 20, 1);
266 test(S("abcde"), 1, 4, "", 0, 4);
267 test(S("abcde"), 1, 4, "abcde", 0, 4);
268 test(S("abcde"), 1, 4, "abcde", 1, 1);
269 test(S("abcde"), 1, 4, "abcde", 2, 1);
270 test(S("abcde"), 1, 4, "abcde", 4, 1);
271 test(S("abcde"), 1, 4, "abcde", 5, 1);
272 test(S("abcde"), 1, 4, "abcdefghij", 0, 4);
273 test(S("abcde"), 1, 4, "abcdefghij", 1, 1);
274 test(S("abcde"), 1, 4, "abcdefghij", 5, 1);
275 test(S("abcde"), 1, 4, "abcdefghij", 9, 1);
276 test(S("abcde"), 1, 4, "abcdefghij", 10, 1);
277 test(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 0, 4);
278 test(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 1, 1);
279 test(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 10, 1);
280 test(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 19, 1);
281 test(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 20, 1);
282 test(S("abcde"), 1, 5, "", 0, 4);
283 test(S("abcde"), 1, 5, "abcde", 0, 4);
284 test(S("abcde"), 1, 5, "abcde", 1, 1);
285 test(S("abcde"), 1, 5, "abcde", 2, 1);
286 test(S("abcde"), 1, 5, "abcde", 4, 1);
287 test(S("abcde"), 1, 5, "abcde", 5, 1);
288 test(S("abcde"), 1, 5, "abcdefghij", 0, 4);
289 test(S("abcde"), 1, 5, "abcdefghij", 1, 1);
290 test(S("abcde"), 1, 5, "abcdefghij", 5, 1);
291 test(S("abcde"), 1, 5, "abcdefghij", 9, 1);
292 test(S("abcde"), 1, 5, "abcdefghij", 10, 1);
293 test(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 0, 4);
294 test(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 1, 1);
295 test(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 10, 1);
296 test(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 19, 1);
297 test(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 20, 1);
298 test(S("abcde"), 2, 0, "", 0, 0);
299 test(S("abcde"), 2, 0, "abcde", 0, 0);
300 test(S("abcde"), 2, 0, "abcde", 1, -1);
301 test(S("abcde"), 2, 0, "abcde", 2, -2);
302 test(S("abcde"), 2, 0, "abcde", 4, -4);
303 test(S("abcde"), 2, 0, "abcde", 5, -5);
304 test(S("abcde"), 2, 0, "abcdefghij", 0, 0);
305 test(S("abcde"), 2, 0, "abcdefghij", 1, -1);
306 test(S("abcde"), 2, 0, "abcdefghij", 5, -5);
307 test(S("abcde"), 2, 0, "abcdefghij", 9, -9);
308 test(S("abcde"), 2, 0, "abcdefghij", 10, -10);
309 test(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 0, 0);
310 test(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 1, -1);
311 test(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 10, -10);
312 test(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 19, -19);
313 test(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 20, -20);
314 test(S("abcde"), 2, 1, "", 0, 1);
315 test(S("abcde"), 2, 1, "abcde", 0, 1);
316 test(S("abcde"), 2, 1, "abcde", 1, 2);
317 test(S("abcde"), 2, 1, "abcde", 2, 2);
318 test(S("abcde"), 2, 1, "abcde", 4, 2);
319 test(S("abcde"), 2, 1, "abcde", 5, 2);
320 test(S("abcde"), 2, 1, "abcdefghij", 0, 1);
321 test(S("abcde"), 2, 1, "abcdefghij", 1, 2);
322 test(S("abcde"), 2, 1, "abcdefghij", 5, 2);
323 test(S("abcde"), 2, 1, "abcdefghij", 9, 2);
324 test(S("abcde"), 2, 1, "abcdefghij", 10, 2);
325 test(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 0, 1);
326 test(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 1, 2);
327 test(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 10, 2);
328 test(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 19, 2);
329 test(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 20, 2);
330 test(S("abcde"), 2, 2, "", 0, 2);
331 test(S("abcde"), 2, 2, "abcde", 0, 2);
332 test(S("abcde"), 2, 2, "abcde", 1, 2);
333 test(S("abcde"), 2, 2, "abcde", 2, 2);
334 test(S("abcde"), 2, 2, "abcde", 4, 2);
335 test(S("abcde"), 2, 2, "abcde", 5, 2);
336 test(S("abcde"), 2, 2, "abcdefghij", 0, 2);
337 test(S("abcde"), 2, 2, "abcdefghij", 1, 2);
338 test(S("abcde"), 2, 2, "abcdefghij", 5, 2);
339 test(S("abcde"), 2, 2, "abcdefghij", 9, 2);
340 test(S("abcde"), 2, 2, "abcdefghij", 10, 2);
341 test(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 0, 2);
342 test(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 1, 2);
343 test(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 10, 2);
344 test(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 19, 2);
345 test(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 20, 2);
346 test(S("abcde"), 2, 3, "", 0, 3);
347 test(S("abcde"), 2, 3, "abcde", 0, 3);
348 test(S("abcde"), 2, 3, "abcde", 1, 2);
349 test(S("abcde"), 2, 3, "abcde", 2, 2);
350 test(S("abcde"), 2, 3, "abcde", 4, 2);
351 test(S("abcde"), 2, 3, "abcde", 5, 2);
352 test(S("abcde"), 2, 3, "abcdefghij", 0, 3);
353 test(S("abcde"), 2, 3, "abcdefghij", 1, 2);
354 test(S("abcde"), 2, 3, "abcdefghij", 5, 2);
355 test(S("abcde"), 2, 3, "abcdefghij", 9, 2);
356 test(S("abcde"), 2, 3, "abcdefghij", 10, 2);
357 test(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 0, 3);
363 test(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 1, 2);
364 test(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 10, 2);
365 test(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 19, 2);
366 test(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 20, 2);
367 test(S("abcde"), 2, 4, "", 0, 3);
368 test(S("abcde"), 2, 4, "abcde", 0, 3);
369 test(S("abcde"), 2, 4, "abcde", 1, 2);
370 test(S("abcde"), 2, 4, "abcde", 2, 2);
371 test(S("abcde"), 2, 4, "abcde", 4, 2);
372 test(S("abcde"), 2, 4, "abcde", 5, 2);
373 test(S("abcde"), 2, 4, "abcdefghij", 0, 3);
374 test(S("abcde"), 2, 4, "abcdefghij", 1, 2);
375 test(S("abcde"), 2, 4, "abcdefghij", 5, 2);
376 test(S("abcde"), 2, 4, "abcdefghij", 9, 2);
377 test(S("abcde"), 2, 4, "abcdefghij", 10, 2);
378 test(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 0, 3);
379 test(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 1, 2);
380 test(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 10, 2);
381 test(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 19, 2);
382 test(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 20, 2);
383 test(S("abcde"), 4, 0, "", 0, 0);
384 test(S("abcde"), 4, 0, "abcde", 0, 0);
385 test(S("abcde"), 4, 0, "abcde", 1, -1);
386 test(S("abcde"), 4, 0, "abcde", 2, -2);
387 test(S("abcde"), 4, 0, "abcde", 4, -4);
388 test(S("abcde"), 4, 0, "abcde", 5, -5);
389 test(S("abcde"), 4, 0, "abcdefghij", 0, 0);
390 test(S("abcde"), 4, 0, "abcdefghij", 1, -1);
391 test(S("abcde"), 4, 0, "abcdefghij", 5, -5);
392 test(S("abcde"), 4, 0, "abcdefghij", 9, -9);
393 test(S("abcde"), 4, 0, "abcdefghij", 10, -10);
394 test(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 0, 0);
395 test(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 1, -1);
396 test(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 10, -10);
397 test(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 19, -19);
398 test(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 20, -20);
399 test(S("abcde"), 4, 1, "", 0, 1);
400 test(S("abcde"), 4, 1, "abcde", 0, 1);
401 test(S("abcde"), 4, 1, "abcde", 1, 4);
402 test(S("abcde"), 4, 1, "abcde", 2, 4);
403 test(S("abcde"), 4, 1, "abcde", 4, 4);
404 test(S("abcde"), 4, 1, "abcde", 5, 4);
405 test(S("abcde"), 4, 1, "abcdefghij", 0, 1);
406 test(S("abcde"), 4, 1, "abcdefghij", 1, 4);
407 test(S("abcde"), 4, 1, "abcdefghij", 5, 4);
408 test(S("abcde"), 4, 1, "abcdefghij", 9, 4);
409 test(S("abcde"), 4, 1, "abcdefghij", 10, 4);
410 test(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 0, 1);
411 test(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 1, 4);
412 test(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 10, 4);
413 test(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 19, 4);
414 test(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 20, 4);
415 test(S("abcde"), 4, 2, "", 0, 1);
416 test(S("abcde"), 4, 2, "abcde", 0, 1);
417 test(S("abcde"), 4, 2, "abcde", 1, 4);
418 test(S("abcde"), 4, 2, "abcde", 2, 4);
419 test(S("abcde"), 4, 2, "abcde", 4, 4);
420 test(S("abcde"), 4, 2, "abcde", 5, 4);
421 test(S("abcde"), 4, 2, "abcdefghij", 0, 1);
422 test(S("abcde"), 4, 2, "abcdefghij", 1, 4);
423 test(S("abcde"), 4, 2, "abcdefghij", 5, 4);
424 test(S("abcde"), 4, 2, "abcdefghij", 9, 4);
425 test(S("abcde"), 4, 2, "abcdefghij", 10, 4);
426 test(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 0, 1);
427 test(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 1, 4);
428 test(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 10, 4);
429 test(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 19, 4);
430 test(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 20, 4);
431 test(S("abcde"), 5, 0, "", 0, 0);
432 test(S("abcde"), 5, 0, "abcde", 0, 0);
433 test(S("abcde"), 5, 0, "abcde", 1, -1);
434 test(S("abcde"), 5, 0, "abcde", 2, -2);
435 test(S("abcde"), 5, 0, "abcde", 4, -4);
436 test(S("abcde"), 5, 0, "abcde", 5, -5);
437 test(S("abcde"), 5, 0, "abcdefghij", 0, 0);
438 test(S("abcde"), 5, 0, "abcdefghij", 1, -1);
439 test(S("abcde"), 5, 0, "abcdefghij", 5, -5);
440 test(S("abcde"), 5, 0, "abcdefghij", 9, -9);
441 test(S("abcde"), 5, 0, "abcdefghij", 10, -10);
442 test(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 0, 0);
443 test(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 1, -1);
444 test(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 10, -10);
445 test(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 19, -19);
446 test(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 20, -20);
447 test(S("abcde"), 5, 1, "", 0, 0);
448 test(S("abcde"), 5, 1, "abcde", 0, 0);
449 test(S("abcde"), 5, 1, "abcde", 1, -1);
450 test(S("abcde"), 5, 1, "abcde", 2, -2);
451 test(S("abcde"), 5, 1, "abcde", 4, -4);
452 test(S("abcde"), 5, 1, "abcde", 5, -5);
453 test(S("abcde"), 5, 1, "abcdefghij", 0, 0);
454 test(S("abcde"), 5, 1, "abcdefghij", 1, -1);
455 test(S("abcde"), 5, 1, "abcdefghij", 5, -5);
456 test(S("abcde"), 5, 1, "abcdefghij", 9, -9);
457 test(S("abcde"), 5, 1, "abcdefghij", 10, -10);
458 test(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 0, 0);
459 test(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 1, -1);
460 test(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 10, -10);
461 test(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 19, -19);
462 test(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 20, -20);
468 test(S("abcde"), 6, 0, "", 0, 0);
469 test(S("abcde"), 6, 0, "abcde", 0, 0);
470 test(S("abcde"), 6, 0, "abcde", 1, 0);
471 test(S("abcde"), 6, 0, "abcde", 2, 0);
472 test(S("abcde"), 6, 0, "abcde", 4, 0);
473 test(S("abcde"), 6, 0, "abcde", 5, 0);
474 test(S("abcde"), 6, 0, "abcdefghij", 0, 0);
475 test(S("abcde"), 6, 0, "abcdefghij", 1, 0);
476 test(S("abcde"), 6, 0, "abcdefghij", 5, 0);
477 test(S("abcde"), 6, 0, "abcdefghij", 9, 0);
478 test(S("abcde"), 6, 0, "abcdefghij", 10, 0);
479 test(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 0, 0);
480 test(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 1, 0);
481 test(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 10, 0);
482 test(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 19, 0);
483 test(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 20, 0);
484 test(S("abcdefghij"), 0, 0, "", 0, 0);
485 test(S("abcdefghij"), 0, 0, "abcde", 0, 0);
486 test(S("abcdefghij"), 0, 0, "abcde", 1, -1);
487 test(S("abcdefghij"), 0, 0, "abcde", 2, -2);
488 test(S("abcdefghij"), 0, 0, "abcde", 4, -4);
489 test(S("abcdefghij"), 0, 0, "abcde", 5, -5);
490 test(S("abcdefghij"), 0, 0, "abcdefghij", 0, 0);
491 test(S("abcdefghij"), 0, 0, "abcdefghij", 1, -1);
492 test(S("abcdefghij"), 0, 0, "abcdefghij", 5, -5);
493 test(S("abcdefghij"), 0, 0, "abcdefghij", 9, -9);
494 test(S("abcdefghij"), 0, 0, "abcdefghij", 10, -10);
495 test(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 0, 0);
496 test(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 1, -1);
497 test(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 10, -10);
498 test(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 19, -19);
499 test(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 20, -20);
500 test(S("abcdefghij"), 0, 1, "", 0, 1);
501 test(S("abcdefghij"), 0, 1, "abcde", 0, 1);
502 test(S("abcdefghij"), 0, 1, "abcde", 1, 0);
503 test(S("abcdefghij"), 0, 1, "abcde", 2, -1);
504 test(S("abcdefghij"), 0, 1, "abcde", 4, -3);
505 test(S("abcdefghij"), 0, 1, "abcde", 5, -4);
506 test(S("abcdefghij"), 0, 1, "abcdefghij", 0, 1);
507 test(S("abcdefghij"), 0, 1, "abcdefghij", 1, 0);
508 test(S("abcdefghij"), 0, 1, "abcdefghij", 5, -4);
509 test(S("abcdefghij"), 0, 1, "abcdefghij", 9, -8);
510 test(S("abcdefghij"), 0, 1, "abcdefghij", 10, -9);
511 test(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 0, 1);
512 test(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 1, 0);
513 test(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 10, -9);
514 test(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 19, -18);
515 test(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 20, -19);
516 test(S("abcdefghij"), 0, 5, "", 0, 5);
517 test(S("abcdefghij"), 0, 5, "abcde", 0, 5);
518 test(S("abcdefghij"), 0, 5, "abcde", 1, 4);
519 test(S("abcdefghij"), 0, 5, "abcde", 2, 3);
520 test(S("abcdefghij"), 0, 5, "abcde", 4, 1);
521 test(S("abcdefghij"), 0, 5, "abcde", 5, 0);
522 test(S("abcdefghij"), 0, 5, "abcdefghij", 0, 5);
523 test(S("abcdefghij"), 0, 5, "abcdefghij", 1, 4);
524 test(S("abcdefghij"), 0, 5, "abcdefghij", 5, 0);
525 test(S("abcdefghij"), 0, 5, "abcdefghij", 9, -4);
526 test(S("abcdefghij"), 0, 5, "abcdefghij", 10, -5);
527 test(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 0, 5);
528 test(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 1, 4);
529 test(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 10, -5);
530 test(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 19, -14);
531 test(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 20, -15);
532 test(S("abcdefghij"), 0, 9, "", 0, 9);
533 test(S("abcdefghij"), 0, 9, "abcde", 0, 9);
534 test(S("abcdefghij"), 0, 9, "abcde", 1, 8);
535 test(S("abcdefghij"), 0, 9, "abcde", 2, 7);
536 test(S("abcdefghij"), 0, 9, "abcde", 4, 5);
537 test(S("abcdefghij"), 0, 9, "abcde", 5, 4);
538 test(S("abcdefghij"), 0, 9, "abcdefghij", 0, 9);
539 test(S("abcdefghij"), 0, 9, "abcdefghij", 1, 8);
540 test(S("abcdefghij"), 0, 9, "abcdefghij", 5, 4);
541 test(S("abcdefghij"), 0, 9, "abcdefghij", 9, 0);
542 test(S("abcdefghij"), 0, 9, "abcdefghij", 10, -1);
543 test(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 0, 9);
544 test(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 1, 8);
545 test(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 10, -1);
546 test(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 19, -10);
547 test(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 20, -11);
548 test(S("abcdefghij"), 0, 10, "", 0, 10);
549 test(S("abcdefghij"), 0, 10, "abcde", 0, 10);
550 test(S("abcdefghij"), 0, 10, "abcde", 1, 9);
551 test(S("abcdefghij"), 0, 10, "abcde", 2, 8);
552 test(S("abcdefghij"), 0, 10, "abcde", 4, 6);
553 test(S("abcdefghij"), 0, 10, "abcde", 5, 5);
554 test(S("abcdefghij"), 0, 10, "abcdefghij", 0, 10);
555 test(S("abcdefghij"), 0, 10, "abcdefghij", 1, 9);
556 test(S("abcdefghij"), 0, 10, "abcdefghij", 5, 5);
557 test(S("abcdefghij"), 0, 10, "abcdefghij", 9, 1);
558 test(S("abcdefghij"), 0, 10, "abcdefghij", 10, 0);
559 test(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 0, 10);
560 test(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 1, 9);
561 test(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 10, 0);
562 test(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 19, -9);
563 test(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 20, -10);
564 test(S("abcdefghij"), 0, 11, "", 0, 10);
565 test(S("abcdefghij"), 0, 11, "abcde", 0, 10);
566 test(S("abcdefghij"), 0, 11, "abcde", 1, 9);
567 test(S("abcdefghij"), 0, 11, "abcde", 2, 8);
573 test(S("abcdefghij"), 0, 11, "abcde", 4, 6);
574 test(S("abcdefghij"), 0, 11, "abcde", 5, 5);
575 test(S("abcdefghij"), 0, 11, "abcdefghij", 0, 10);
576 test(S("abcdefghij"), 0, 11, "abcdefghij", 1, 9);
577 test(S("abcdefghij"), 0, 11, "abcdefghij", 5, 5);
578 test(S("abcdefghij"), 0, 11, "abcdefghij", 9, 1);
579 test(S("abcdefghij"), 0, 11, "abcdefghij", 10, 0);
580 test(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 0, 10);
581 test(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 1, 9);
582 test(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 10, 0);
583 test(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 19, -9);
584 test(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 20, -10);
585 test(S("abcdefghij"), 1, 0, "", 0, 0);
586 test(S("abcdefghij"), 1, 0, "abcde", 0, 0);
587 test(S("abcdefghij"), 1, 0, "abcde", 1, -1);
588 test(S("abcdefghij"), 1, 0, "abcde", 2, -2);
589 test(S("abcdefghij"), 1, 0, "abcde", 4, -4);
590 test(S("abcdefghij"), 1, 0, "abcde", 5, -5);
591 test(S("abcdefghij"), 1, 0, "abcdefghij", 0, 0);
592 test(S("abcdefghij"), 1, 0, "abcdefghij", 1, -1);
593 test(S("abcdefghij"), 1, 0, "abcdefghij", 5, -5);
594 test(S("abcdefghij"), 1, 0, "abcdefghij", 9, -9);
595 test(S("abcdefghij"), 1, 0, "abcdefghij", 10, -10);
596 test(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 0, 0);
597 test(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 1, -1);
598 test(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 10, -10);
599 test(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 19, -19);
600 test(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 20, -20);
601 test(S("abcdefghij"), 1, 1, "", 0, 1);
602 test(S("abcdefghij"), 1, 1, "abcde", 0, 1);
603 test(S("abcdefghij"), 1, 1, "abcde", 1, 1);
604 test(S("abcdefghij"), 1, 1, "abcde", 2, 1);
605 test(S("abcdefghij"), 1, 1, "abcde", 4, 1);
606 test(S("abcdefghij"), 1, 1, "abcde", 5, 1);
607 test(S("abcdefghij"), 1, 1, "abcdefghij", 0, 1);
608 test(S("abcdefghij"), 1, 1, "abcdefghij", 1, 1);
609 test(S("abcdefghij"), 1, 1, "abcdefghij", 5, 1);
610 test(S("abcdefghij"), 1, 1, "abcdefghij", 9, 1);
611 test(S("abcdefghij"), 1, 1, "abcdefghij", 10, 1);
612 test(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 0, 1);
613 test(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 1, 1);
614 test(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 10, 1);
615 test(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 19, 1);
616 test(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 20, 1);
617 test(S("abcdefghij"), 1, 4, "", 0, 4);
618 test(S("abcdefghij"), 1, 4, "abcde", 0, 4);
619 test(S("abcdefghij"), 1, 4, "abcde", 1, 1);
620 test(S("abcdefghij"), 1, 4, "abcde", 2, 1);
621 test(S("abcdefghij"), 1, 4, "abcde", 4, 1);
622 test(S("abcdefghij"), 1, 4, "abcde", 5, 1);
623 test(S("abcdefghij"), 1, 4, "abcdefghij", 0, 4);
624 test(S("abcdefghij"), 1, 4, "abcdefghij", 1, 1);
625 test(S("abcdefghij"), 1, 4, "abcdefghij", 5, 1);
626 test(S("abcdefghij"), 1, 4, "abcdefghij", 9, 1);
627 test(S("abcdefghij"), 1, 4, "abcdefghij", 10, 1);
628 test(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 0, 4);
629 test(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 1, 1);
630 test(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 10, 1);
631 test(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 19, 1);
632 test(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 20, 1);
633 test(S("abcdefghij"), 1, 8, "", 0, 8);
634 test(S("abcdefghij"), 1, 8, "abcde", 0, 8);
635 test(S("abcdefghij"), 1, 8, "abcde", 1, 1);
636 test(S("abcdefghij"), 1, 8, "abcde", 2, 1);
637 test(S("abcdefghij"), 1, 8, "abcde", 4, 1);
638 test(S("abcdefghij"), 1, 8, "abcde", 5, 1);
639 test(S("abcdefghij"), 1, 8, "abcdefghij", 0, 8);
640 test(S("abcdefghij"), 1, 8, "abcdefghij", 1, 1);
641 test(S("abcdefghij"), 1, 8, "abcdefghij", 5, 1);
642 test(S("abcdefghij"), 1, 8, "abcdefghij", 9, 1);
643 test(S("abcdefghij"), 1, 8, "abcdefghij", 10, 1);
644 test(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 0, 8);
645 test(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 1, 1);
646 test(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 10, 1);
647 test(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 19, 1);
648 test(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 20, 1);
649 test(S("abcdefghij"), 1, 9, "", 0, 9);
650 test(S("abcdefghij"), 1, 9, "abcde", 0, 9);
651 test(S("abcdefghij"), 1, 9, "abcde", 1, 1);
652 test(S("abcdefghij"), 1, 9, "abcde", 2, 1);
653 test(S("abcdefghij"), 1, 9, "abcde", 4, 1);
654 test(S("abcdefghij"), 1, 9, "abcde", 5, 1);
655 test(S("abcdefghij"), 1, 9, "abcdefghij", 0, 9);
656 test(S("abcdefghij"), 1, 9, "abcdefghij", 1, 1);
657 test(S("abcdefghij"), 1, 9, "abcdefghij", 5, 1);
658 test(S("abcdefghij"), 1, 9, "abcdefghij", 9, 1);
659 test(S("abcdefghij"), 1, 9, "abcdefghij", 10, 1);
660 test(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 0, 9);
661 test(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 1, 1);
662 test(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 10, 1);
663 test(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 19, 1);
664 test(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 20, 1);
665 test(S("abcdefghij"), 1, 10, "", 0, 9);
666 test(S("abcdefghij"), 1, 10, "abcde", 0, 9);
667 test(S("abcdefghij"), 1, 10, "abcde", 1, 1);
668 test(S("abcdefghij"), 1, 10, "abcde", 2, 1);
669 test(S("abcdefghij"), 1, 10, "abcde", 4, 1);
670 test(S("abcdefghij"), 1, 10, "abcde", 5, 1);
671 test(S("abcdefghij"), 1, 10, "abcdefghij", 0, 9);
672 test(S("abcdefghij"), 1, 10, "abcdefghij", 1, 1);
678 test(S("abcdefghij"), 1, 10, "abcdefghij", 5, 1);
679 test(S("abcdefghij"), 1, 10, "abcdefghij", 9, 1);
680 test(S("abcdefghij"), 1, 10, "abcdefghij", 10, 1);
681 test(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 0, 9);
682 test(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 1, 1);
683 test(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 10, 1);
684 test(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 19, 1);
685 test(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 20, 1);
686 test(S("abcdefghij"), 5, 0, "", 0, 0);
687 test(S("abcdefghij"), 5, 0, "abcde", 0, 0);
688 test(S("abcdefghij"), 5, 0, "abcde", 1, -1);
689 test(S("abcdefghij"), 5, 0, "abcde", 2, -2);
690 test(S("abcdefghij"), 5, 0, "abcde", 4, -4);
691 test(S("abcdefghij"), 5, 0, "abcde", 5, -5);
692 test(S("abcdefghij"), 5, 0, "abcdefghij", 0, 0);
693 test(S("abcdefghij"), 5, 0, "abcdefghij", 1, -1);
694 test(S("abcdefghij"), 5, 0, "abcdefghij", 5, -5);
695 test(S("abcdefghij"), 5, 0, "abcdefghij", 9, -9);
696 test(S("abcdefghij"), 5, 0, "abcdefghij", 10, -10);
697 test(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 0, 0);
698 test(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 1, -1);
699 test(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 10, -10);
700 test(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 19, -19);
701 test(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 20, -20);
702 test(S("abcdefghij"), 5, 1, "", 0, 1);
703 test(S("abcdefghij"), 5, 1, "abcde", 0, 1);
704 test(S("abcdefghij"), 5, 1, "abcde", 1, 5);
705 test(S("abcdefghij"), 5, 1, "abcde", 2, 5);
706 test(S("abcdefghij"), 5, 1, "abcde", 4, 5);
707 test(S("abcdefghij"), 5, 1, "abcde", 5, 5);
708 test(S("abcdefghij"), 5, 1, "abcdefghij", 0, 1);
709 test(S("abcdefghij"), 5, 1, "abcdefghij", 1, 5);
710 test(S("abcdefghij"), 5, 1, "abcdefghij", 5, 5);
711 test(S("abcdefghij"), 5, 1, "abcdefghij", 9, 5);
712 test(S("abcdefghij"), 5, 1, "abcdefghij", 10, 5);
713 test(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 0, 1);
714 test(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 1, 5);
715 test(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 10, 5);
716 test(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 19, 5);
717 test(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 20, 5);
718 test(S("abcdefghij"), 5, 2, "", 0, 2);
719 test(S("abcdefghij"), 5, 2, "abcde", 0, 2);
720 test(S("abcdefghij"), 5, 2, "abcde", 1, 5);
721 test(S("abcdefghij"), 5, 2, "abcde", 2, 5);
722 test(S("abcdefghij"), 5, 2, "abcde", 4, 5);
723 test(S("abcdefghij"), 5, 2, "abcde", 5, 5);
724 test(S("abcdefghij"), 5, 2, "abcdefghij", 0, 2);
725 test(S("abcdefghij"), 5, 2, "abcdefghij", 1, 5);
726 test(S("abcdefghij"), 5, 2, "abcdefghij", 5, 5);
727 test(S("abcdefghij"), 5, 2, "abcdefghij", 9, 5);
728 test(S("abcdefghij"), 5, 2, "abcdefghij", 10, 5);
729 test(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 0, 2);
730 test(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 1, 5);
731 test(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 10, 5);
732 test(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 19, 5);
733 test(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 20, 5);
734 test(S("abcdefghij"), 5, 4, "", 0, 4);
735 test(S("abcdefghij"), 5, 4, "abcde", 0, 4);
736 test(S("abcdefghij"), 5, 4, "abcde", 1, 5);
737 test(S("abcdefghij"), 5, 4, "abcde", 2, 5);
738 test(S("abcdefghij"), 5, 4, "abcde", 4, 5);
739 test(S("abcdefghij"), 5, 4, "abcde", 5, 5);
740 test(S("abcdefghij"), 5, 4, "abcdefghij", 0, 4);
741 test(S("abcdefghij"), 5, 4, "abcdefghij", 1, 5);
742 test(S("abcdefghij"), 5, 4, "abcdefghij", 5, 5);
743 test(S("abcdefghij"), 5, 4, "abcdefghij", 9, 5);
744 test(S("abcdefghij"), 5, 4, "abcdefghij", 10, 5);
745 test(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 0, 4);
746 test(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 1, 5);
747 test(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 10, 5);
748 test(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 19, 5);
749 test(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 20, 5);
750 test(S("abcdefghij"), 5, 5, "", 0, 5);
751 test(S("abcdefghij"), 5, 5, "abcde", 0, 5);
752 test(S("abcdefghij"), 5, 5, "abcde", 1, 5);
753 test(S("abcdefghij"), 5, 5, "abcde", 2, 5);
754 test(S("abcdefghij"), 5, 5, "abcde", 4, 5);
755 test(S("abcdefghij"), 5, 5, "abcde", 5, 5);
756 test(S("abcdefghij"), 5, 5, "abcdefghij", 0, 5);
757 test(S("abcdefghij"), 5, 5, "abcdefghij", 1, 5);
758 test(S("abcdefghij"), 5, 5, "abcdefghij", 5, 5);
759 test(S("abcdefghij"), 5, 5, "abcdefghij", 9, 5);
760 test(S("abcdefghij"), 5, 5, "abcdefghij", 10, 5);
761 test(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 0, 5);
762 test(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 1, 5);
763 test(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 10, 5);
764 test(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 19, 5);
765 test(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 20, 5);
766 test(S("abcdefghij"), 5, 6, "", 0, 5);
767 test(S("abcdefghij"), 5, 6, "abcde", 0, 5);
768 test(S("abcdefghij"), 5, 6, "abcde", 1, 5);
769 test(S("abcdefghij"), 5, 6, "abcde", 2, 5);
770 test(S("abcdefghij"), 5, 6, "abcde", 4, 5);
771 test(S("abcdefghij"), 5, 6, "abcde", 5, 5);
772 test(S("abcdefghij"), 5, 6, "abcdefghij", 0, 5);
773 test(S("abcdefghij"), 5, 6, "abcdefghij", 1, 5);
774 test(S("abcdefghij"), 5, 6, "abcdefghij", 5, 5);
775 test(S("abcdefghij"), 5, 6, "abcdefghij", 9, 5);
776 test(S("abcdefghij"), 5, 6, "abcdefghij", 10, 5);
777 test(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 0, 5);
783 test(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 1, 5);
784 test(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 10, 5);
785 test(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 19, 5);
786 test(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 20, 5);
787 test(S("abcdefghij"), 9, 0, "", 0, 0);
788 test(S("abcdefghij"), 9, 0, "abcde", 0, 0);
789 test(S("abcdefghij"), 9, 0, "abcde", 1, -1);
790 test(S("abcdefghij"), 9, 0, "abcde", 2, -2);
791 test(S("abcdefghij"), 9, 0, "abcde", 4, -4);
792 test(S("abcdefghij"), 9, 0, "abcde", 5, -5);
793 test(S("abcdefghij"), 9, 0, "abcdefghij", 0, 0);
794 test(S("abcdefghij"), 9, 0, "abcdefghij", 1, -1);
795 test(S("abcdefghij"), 9, 0, "abcdefghij", 5, -5);
796 test(S("abcdefghij"), 9, 0, "abcdefghij", 9, -9);
797 test(S("abcdefghij"), 9, 0, "abcdefghij", 10, -10);
798 test(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 0, 0);
799 test(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 1, -1);
800 test(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 10, -10);
801 test(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 19, -19);
802 test(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 20, -20);
803 test(S("abcdefghij"), 9, 1, "", 0, 1);
804 test(S("abcdefghij"), 9, 1, "abcde", 0, 1);
805 test(S("abcdefghij"), 9, 1, "abcde", 1, 9);
806 test(S("abcdefghij"), 9, 1, "abcde", 2, 9);
807 test(S("abcdefghij"), 9, 1, "abcde", 4, 9);
808 test(S("abcdefghij"), 9, 1, "abcde", 5, 9);
809 test(S("abcdefghij"), 9, 1, "abcdefghij", 0, 1);
810 test(S("abcdefghij"), 9, 1, "abcdefghij", 1, 9);
811 test(S("abcdefghij"), 9, 1, "abcdefghij", 5, 9);
812 test(S("abcdefghij"), 9, 1, "abcdefghij", 9, 9);
813 test(S("abcdefghij"), 9, 1, "abcdefghij", 10, 9);
814 test(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 0, 1);
815 test(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 1, 9);
816 test(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 10, 9);
817 test(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 19, 9);
818 test(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 20, 9);
819 test(S("abcdefghij"), 9, 2, "", 0, 1);
820 test(S("abcdefghij"), 9, 2, "abcde", 0, 1);
821 test(S("abcdefghij"), 9, 2, "abcde", 1, 9);
822 test(S("abcdefghij"), 9, 2, "abcde", 2, 9);
823 test(S("abcdefghij"), 9, 2, "abcde", 4, 9);
824 test(S("abcdefghij"), 9, 2, "abcde", 5, 9);
825 test(S("abcdefghij"), 9, 2, "abcdefghij", 0, 1);
826 test(S("abcdefghij"), 9, 2, "abcdefghij", 1, 9);
827 test(S("abcdefghij"), 9, 2, "abcdefghij", 5, 9);
828 test(S("abcdefghij"), 9, 2, "abcdefghij", 9, 9);
829 test(S("abcdefghij"), 9, 2, "abcdefghij", 10, 9);
830 test(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 0, 1);
831 test(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 1, 9);
832 test(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 10, 9);
833 test(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 19, 9);
834 test(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 20, 9);
835 test(S("abcdefghij"), 10, 0, "", 0, 0);
836 test(S("abcdefghij"), 10, 0, "abcde", 0, 0);
837 test(S("abcdefghij"), 10, 0, "abcde", 1, -1);
838 test(S("abcdefghij"), 10, 0, "abcde", 2, -2);
839 test(S("abcdefghij"), 10, 0, "abcde", 4, -4);
840 test(S("abcdefghij"), 10, 0, "abcde", 5, -5);
841 test(S("abcdefghij"), 10, 0, "abcdefghij", 0, 0);
842 test(S("abcdefghij"), 10, 0, "abcdefghij", 1, -1);
843 test(S("abcdefghij"), 10, 0, "abcdefghij", 5, -5);
844 test(S("abcdefghij"), 10, 0, "abcdefghij", 9, -9);
845 test(S("abcdefghij"), 10, 0, "abcdefghij", 10, -10);
846 test(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 0, 0);
847 test(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 1, -1);
848 test(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 10, -10);
849 test(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 19, -19);
850 test(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 20, -20);
851 test(S("abcdefghij"), 10, 1, "", 0, 0);
852 test(S("abcdefghij"), 10, 1, "abcde", 0, 0);
853 test(S("abcdefghij"), 10, 1, "abcde", 1, -1);
854 test(S("abcdefghij"), 10, 1, "abcde", 2, -2);
855 test(S("abcdefghij"), 10, 1, "abcde", 4, -4);
856 test(S("abcdefghij"), 10, 1, "abcde", 5, -5);
857 test(S("abcdefghij"), 10, 1, "abcdefghij", 0, 0);
858 test(S("abcdefghij"), 10, 1, "abcdefghij", 1, -1);
859 test(S("abcdefghij"), 10, 1, "abcdefghij", 5, -5);
860 test(S("abcdefghij"), 10, 1, "abcdefghij", 9, -9);
861 test(S("abcdefghij"), 10, 1, "abcdefghij", 10, -10);
862 test(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 0, 0);
863 test(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 1, -1);
864 test(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 10, -10);
865 test(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 19, -19);
866 test(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 20, -20);
867 test(S("abcdefghij"), 11, 0, "", 0, 0);
868 test(S("abcdefghij"), 11, 0, "abcde", 0, 0);
869 test(S("abcdefghij"), 11, 0, "abcde", 1, 0);
870 test(S("abcdefghij"), 11, 0, "abcde", 2, 0);
871 test(S("abcdefghij"), 11, 0, "abcde", 4, 0);
872 test(S("abcdefghij"), 11, 0, "abcde", 5, 0);
873 test(S("abcdefghij"), 11, 0, "abcdefghij", 0, 0);
874 test(S("abcdefghij"), 11, 0, "abcdefghij", 1, 0);
875 test(S("abcdefghij"), 11, 0, "abcdefghij", 5, 0);
876 test(S("abcdefghij"), 11, 0, "abcdefghij", 9, 0);
877 test(S("abcdefghij"), 11, 0, "abcdefghij", 10, 0);
878 test(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 0, 0);
879 test(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 1, 0);
880 test(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 10, 0);
881 test(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 19, 0);
882 test(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 20, 0);
888 test(S("abcdefghijklmnopqrst"), 0, 0, "", 0, 0);
889 test(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 0, 0);
890 test(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 1, -1);
891 test(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 2, -2);
892 test(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 4, -4);
893 test(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 5, -5);
894 test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 0, 0);
895 test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 1, -1);
896 test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 5, -5);
897 test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 9, -9);
898 test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 10, -10);
899 test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 0, 0);
900 test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 1, -1);
901 test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 10, -10);
902 test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 19, -19);
903 test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 20, -20);
904 test(S("abcdefghijklmnopqrst"), 0, 1, "", 0, 1);
905 test(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 0, 1);
906 test(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 1, 0);
907 test(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 2, -1);
908 test(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 4, -3);
909 test(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 5, -4);
910 test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 0, 1);
911 test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 1, 0);
912 test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 5, -4);
913 test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 9, -8);
914 test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 10, -9);
915 test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 0, 1);
916 test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 1, 0);
917 test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 10, -9);
918 test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 19, -18);
919 test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 20, -19);
920 test(S("abcdefghijklmnopqrst"), 0, 10, "", 0, 10);
921 test(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 0, 10);
922 test(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 1, 9);
923 test(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 2, 8);
924 test(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 4, 6);
925 test(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 5, 5);
926 test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 0, 10);
927 test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 1, 9);
928 test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 5, 5);
929 test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 9, 1);
930 test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 10, 0);
931 test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 0, 10);
932 test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 1, 9);
933 test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 10, 0);
934 test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 19, -9);
935 test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 20, -10);
936 test(S("abcdefghijklmnopqrst"), 0, 19, "", 0, 19);
937 test(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 0, 19);
938 test(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 1, 18);
939 test(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 2, 17);
940 test(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 4, 15);
941 test(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 5, 14);
942 test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 0, 19);
943 test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 1, 18);
944 test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 5, 14);
945 test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 9, 10);
946 test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 10, 9);
947 test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 0, 19);
948 test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 1, 18);
949 test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 10, 9);
950 test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 19, 0);
951 test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 20, -1);
952 test(S("abcdefghijklmnopqrst"), 0, 20, "", 0, 20);
953 test(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 0, 20);
954 test(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 1, 19);
955 test(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 2, 18);
956 test(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 4, 16);
957 test(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 5, 15);
958 test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 0, 20);
959 test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 1, 19);
960 test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 5, 15);
961 test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 9, 11);
962 test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 10, 10);
963 test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 0, 20);
964 test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 1, 19);
965 test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 10, 10);
966 test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 19, 1);
967 test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 20, 0);
968 test(S("abcdefghijklmnopqrst"), 0, 21, "", 0, 20);
969 test(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 0, 20);
970 test(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 1, 19);
971 test(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 2, 18);
972 test(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 4, 16);
973 test(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 5, 15);
974 test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 0, 20);
975 test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 1, 19);
976 test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 5, 15);
977 test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 9, 11);
978 test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 10, 10);
979 test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 0, 20);
980 test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 1, 19);
981 test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 10, 10);
982 test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 19, 1);
983 test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 20, 0);
984 test(S("abcdefghijklmnopqrst"), 1, 0, "", 0, 0);
985 test(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 0, 0);
986 test(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 1, -1);
987 test(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 2, -2);
993 test(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 4, -4);
994 test(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 5, -5);
995 test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 0, 0);
996 test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 1, -1);
997 test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 5, -5);
998 test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 9, -9);
999 test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 10, -10);
1000 test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 0, 0);
1001 test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 1, -1);
1002 test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 10, -10);
1003 test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 19, -19);
1004 test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 20, -20);
1005 test(S("abcdefghijklmnopqrst"), 1, 1, "", 0, 1);
1006 test(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 0, 1);
1007 test(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 1, 1);
1008 test(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 2, 1);
1009 test(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 4, 1);
1010 test(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 5, 1);
1011 test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 0, 1);
1012 test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 1, 1);
1013 test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 5, 1);
1014 test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 9, 1);
1015 test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 10, 1);
1016 test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 0, 1);
1017 test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 1, 1);
1018 test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 10, 1);
1019 test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 19, 1);
1020 test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 20, 1);
1021 test(S("abcdefghijklmnopqrst"), 1, 9, "", 0, 9);
1022 test(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 0, 9);
1023 test(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 1, 1);
1024 test(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 2, 1);
1025 test(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 4, 1);
1026 test(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 5, 1);
1027 test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 0, 9);
1028 test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 1, 1);
1029 test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 5, 1);
1030 test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 9, 1);
1031 test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 10, 1);
1032 test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 0, 9);
1033 test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 1, 1);
1034 test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 10, 1);
1035 test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 19, 1);
1036 test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 20, 1);
1037 test(S("abcdefghijklmnopqrst"), 1, 18, "", 0, 18);
1038 test(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 0, 18);
1039 test(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 1, 1);
1040 test(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 2, 1);
1041 test(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 4, 1);
1042 test(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 5, 1);
1043 test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 0, 18);
1044 test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 1, 1);
1045 test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 5, 1);
1046 test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 9, 1);
1047 test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 10, 1);
1048 test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 0, 18);
1049 test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 1, 1);
1050 test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 10, 1);
1051 test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 19, 1);
1052 test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 20, 1);
1053 test(S("abcdefghijklmnopqrst"), 1, 19, "", 0, 19);
1054 test(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 0, 19);
1055 test(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 1, 1);
1056 test(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 2, 1);
1057 test(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 4, 1);
1058 test(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 5, 1);
1059 test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 0, 19);
1060 test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 1, 1);
1061 test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 5, 1);
1062 test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 9, 1);
1063 test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 10, 1);
1064 test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 0, 19);
1065 test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 1, 1);
1066 test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 10, 1);
1067 test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 19, 1);
1068 test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 20, 1);
1069 test(S("abcdefghijklmnopqrst"), 1, 20, "", 0, 19);
1070 test(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 0, 19);
1071 test(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 1, 1);
1072 test(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 2, 1);
1073 test(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 4, 1);
1074 test(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 5, 1);
1075 test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 0, 19);
1076 test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 1, 1);
1077 test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 5, 1);
1078 test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 9, 1);
1079 test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 10, 1);
1080 test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 0, 19);
1081 test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 1, 1);
1082 test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 10, 1);
1083 test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 19, 1);
1084 test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 20, 1);
1085 test(S("abcdefghijklmnopqrst"), 10, 0, "", 0, 0);
1086 test(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 0, 0);
1087 test(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 1, -1);
1088 test(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 2, -2);
1089 test(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 4, -4);
1090 test(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 5, -5);
1091 test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 0, 0);
1092 test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 1, -1);
1098 test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 5, -5);
1099 test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 9, -9);
1100 test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 10, -10);
1101 test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 0, 0);
1102 test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 1, -1);
1103 test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 10, -10);
1104 test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 19, -19);
1105 test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 20, -20);
1106 test(S("abcdefghijklmnopqrst"), 10, 1, "", 0, 1);
1107 test(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 0, 1);
1108 test(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 1, 10);
1109 test(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 2, 10);
1110 test(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 4, 10);
1111 test(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 5, 10);
1112 test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 0, 1);
1113 test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 1, 10);
1114 test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 5, 10);
1115 test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 9, 10);
1116 test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 10, 10);
1117 test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 0, 1);
1118 test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 1, 10);
1119 test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 10, 10);
1120 test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 19, 10);
1121 test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 20, 10);
1122 test(S("abcdefghijklmnopqrst"), 10, 5, "", 0, 5);
1123 test(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 0, 5);
1124 test(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 1, 10);
1125 test(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 2, 10);
1126 test(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 4, 10);
1127 test(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 5, 10);
1128 test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 0, 5);
1129 test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 1, 10);
1130 test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 5, 10);
1131 test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 9, 10);
1132 test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 10, 10);
1133 test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 0, 5);
1134 test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 1, 10);
1135 test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 10, 10);
1136 test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 19, 10);
1137 test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 20, 10);
1138 test(S("abcdefghijklmnopqrst"), 10, 9, "", 0, 9);
1139 test(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 0, 9);
1140 test(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 1, 10);
1141 test(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 2, 10);
1142 test(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 4, 10);
1143 test(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 5, 10);
1144 test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 0, 9);
1145 test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 1, 10);
1146 test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 5, 10);
1147 test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 9, 10);
1148 test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 10, 10);
1149 test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 0, 9);
1150 test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 1, 10);
1151 test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 10, 10);
1152 test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 19, 10);
1153 test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 20, 10);
1154 test(S("abcdefghijklmnopqrst"), 10, 10, "", 0, 10);
1155 test(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 0, 10);
1156 test(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 1, 10);
1157 test(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 2, 10);
1158 test(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 4, 10);
1159 test(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 5, 10);
1160 test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 0, 10);
1161 test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 1, 10);
1162 test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 5, 10);
1163 test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 9, 10);
1164 test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 10, 10);
1165 test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 0, 10);
1166 test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 1, 10);
1167 test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 10, 10);
1168 test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 19, 10);
1169 test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 20, 10);
1170 test(S("abcdefghijklmnopqrst"), 10, 11, "", 0, 10);
1171 test(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 0, 10);
1172 test(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 1, 10);
1173 test(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 2, 10);
1174 test(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 4, 10);
1175 test(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 5, 10);
1176 test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 0, 10);
1177 test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 1, 10);
1178 test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 5, 10);
1179 test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 9, 10);
1180 test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 10, 10);
1181 test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 0, 10);
1182 test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 1, 10);
1183 test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 10, 10);
1184 test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 19, 10);
1185 test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 20, 10);
1186 test(S("abcdefghijklmnopqrst"), 19, 0, "", 0, 0);
1187 test(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 0, 0);
1188 test(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 1, -1);
1189 test(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 2, -2);
1190 test(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 4, -4);
1191 test(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 5, -5);
1192 test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 0, 0);
1193 test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 1, -1);
1194 test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 5, -5);
1195 test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 9, -9);
1196 test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 10, -10);
1197 test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 0, 0);
1203 test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 1, -1);
1204 test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 10, -10);
1205 test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 19, -19);
1206 test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 20, -20);
1207 test(S("abcdefghijklmnopqrst"), 19, 1, "", 0, 1);
1208 test(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 0, 1);
1209 test(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 1, 19);
1210 test(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 2, 19);
1211 test(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 4, 19);
1212 test(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 5, 19);
1213 test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 0, 1);
1214 test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 1, 19);
1215 test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 5, 19);
1216 test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 9, 19);
1217 test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 10, 19);
1218 test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 0, 1);
1219 test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 1, 19);
1220 test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 10, 19);
1221 test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 19, 19);
1222 test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 20, 19);
1223 test(S("abcdefghijklmnopqrst"), 19, 2, "", 0, 1);
1224 test(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 0, 1);
1225 test(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 1, 19);
1226 test(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 2, 19);
1227 test(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 4, 19);
1228 test(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 5, 19);
1229 test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 0, 1);
1230 test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 1, 19);
1231 test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 5, 19);
1232 test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 9, 19);
1233 test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 10, 19);
1234 test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 0, 1);
1235 test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 1, 19);
1236 test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 10, 19);
1237 test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 19, 19);
1238 test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 20, 19);
1239 test(S("abcdefghijklmnopqrst"), 20, 0, "", 0, 0);
1240 test(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 0, 0);
1241 test(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 1, -1);
1242 test(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 2, -2);
1243 test(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 4, -4);
1244 test(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 5, -5);
1245 test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 0, 0);
1246 test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 1, -1);
1247 test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 5, -5);
1248 test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 9, -9);
1249 test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 10, -10);
1250 test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 0, 0);
1251 test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 1, -1);
1252 test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 10, -10);
1253 test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 19, -19);
1254 test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 20, -20);
1255 test(S("abcdefghijklmnopqrst"), 20, 1, "", 0, 0);
1256 test(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 0, 0);
1257 test(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 1, -1);
1258 test(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 2, -2);
1259 test(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 4, -4);
1260 test(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 5, -5);
1261 test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 0, 0);
1262 test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 1, -1);
1263 test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 5, -5);
1264 test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 9, -9);
1265 test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 10, -10);
1266 test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 0, 0);
1267 test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 1, -1);
1268 test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 10, -10);
1269 test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 19, -19);
1270 test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 20, -20);
1271 test(S("abcdefghijklmnopqrst"), 21, 0, "", 0, 0);
1272 test(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 0, 0);
1273 test(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 1, 0);
1274 test(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 2, 0);
1275 test(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 4, 0);
1276 test(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 5, 0);
1277 test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 0, 0);
1278 test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 1, 0);
1279 test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 5, 0);
1280 test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 9, 0);
1281 test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 10, 0);
1282 test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 0, 0);
1283 test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 1, 0);
1284 test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 10, 0);
1285 test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 19, 0);
1286 test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 20, 0);