blob: 33407ef0747e90112dffe5b4bd15a0c62064c56e [file] [log] [blame]
Marshall Clow164b2972014-06-11 16:44:55 +00001//===----------------------------------------------------------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10
Marshall Clow164b2972014-06-11 16:44:55 +000011// <string_view>
12
13// constexpr int compare(size_type pos1, size_type n1, basic_string_view str,
14// size_type pos2, size_type n2) const;
15
16#include <experimental/string_view>
17#include <cassert>
18
19#include "constexpr_char_traits.hpp"
20
21int sign ( int x ) { return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); }
22
23template<typename CharT>
24void test1 ( std::experimental::basic_string_view<CharT> sv1, size_t pos1, size_t n1,
25 std::experimental::basic_string_view<CharT> sv2, size_t pos2, size_t n2,
26 int expected ) {
27
28 try
29 {
30 assert ( sign( sv1.compare(pos1, n1, sv2, pos2, n2)) == sign(expected));
31 assert(pos1 <= sv1.size());
32 assert(pos2 <= sv2.size());
33 }
34 catch (const std::out_of_range&) { assert(pos1 > sv1.size() || pos2 > sv2.size()); }
35}
36
37
38template<typename CharT>
39void test ( const CharT *s1, size_t pos1, size_t n1,
40 const CharT *s2, size_t pos2, size_t n2,
41 int expected ) {
42 typedef std::experimental::basic_string_view<CharT> string_view_t;
43
44 string_view_t sv1 ( s1 );
45 string_view_t sv2 ( s2 );
46 test1(sv1, pos1, n1, sv2, pos2, n2, expected);
47}
48
49void test0()
50{
51 test("", 0, 0, "", 0, 0, 0);
52 test("", 0, 0, "", 0, 1, 0);
53 test("", 0, 0, "", 1, 0, 0);
54 test("", 0, 0, "abcde", 0, 0, 0);
55 test("", 0, 0, "abcde", 0, 1, -1);
56 test("", 0, 0, "abcde", 0, 2, -2);
57 test("", 0, 0, "abcde", 0, 4, -4);
58 test("", 0, 0, "abcde", 0, 5, -5);
59 test("", 0, 0, "abcde", 0, 6, -5);
60 test("", 0, 0, "abcde", 1, 0, 0);
61 test("", 0, 0, "abcde", 1, 1, -1);
62 test("", 0, 0, "abcde", 1, 2, -2);
63 test("", 0, 0, "abcde", 1, 3, -3);
64 test("", 0, 0, "abcde", 1, 4, -4);
65 test("", 0, 0, "abcde", 1, 5, -4);
66 test("", 0, 0, "abcde", 2, 0, 0);
67 test("", 0, 0, "abcde", 2, 1, -1);
68 test("", 0, 0, "abcde", 2, 2, -2);
69 test("", 0, 0, "abcde", 2, 3, -3);
70 test("", 0, 0, "abcde", 2, 4, -3);
71 test("", 0, 0, "abcde", 4, 0, 0);
72 test("", 0, 0, "abcde", 4, 1, -1);
73 test("", 0, 0, "abcde", 4, 2, -1);
74 test("", 0, 0, "abcde", 5, 0, 0);
75 test("", 0, 0, "abcde", 5, 1, 0);
76 test("", 0, 0, "abcde", 6, 0, 0);
77 test("", 0, 0, "abcdefghij", 0, 0, 0);
78 test("", 0, 0, "abcdefghij", 0, 1, -1);
79 test("", 0, 0, "abcdefghij", 0, 5, -5);
80 test("", 0, 0, "abcdefghij", 0, 9, -9);
81 test("", 0, 0, "abcdefghij", 0, 10, -10);
82 test("", 0, 0, "abcdefghij", 0, 11, -10);
83 test("", 0, 0, "abcdefghij", 1, 0, 0);
84 test("", 0, 0, "abcdefghij", 1, 1, -1);
85 test("", 0, 0, "abcdefghij", 1, 4, -4);
86 test("", 0, 0, "abcdefghij", 1, 8, -8);
87 test("", 0, 0, "abcdefghij", 1, 9, -9);
88 test("", 0, 0, "abcdefghij", 1, 10, -9);
89 test("", 0, 0, "abcdefghij", 5, 0, 0);
90 test("", 0, 0, "abcdefghij", 5, 1, -1);
91 test("", 0, 0, "abcdefghij", 5, 2, -2);
92 test("", 0, 0, "abcdefghij", 5, 4, -4);
93 test("", 0, 0, "abcdefghij", 5, 5, -5);
94 test("", 0, 0, "abcdefghij", 5, 6, -5);
95 test("", 0, 0, "abcdefghij", 9, 0, 0);
96 test("", 0, 0, "abcdefghij", 9, 1, -1);
97 test("", 0, 0, "abcdefghij", 9, 2, -1);
98 test("", 0, 0, "abcdefghij", 10, 0, 0);
99 test("", 0, 0, "abcdefghij", 10, 1, 0);
100 test("", 0, 0, "abcdefghij", 11, 0, 0);
101 test("", 0, 0, "abcdefghijklmnopqrst", 0, 0, 0);
102 test("", 0, 0, "abcdefghijklmnopqrst", 0, 1, -1);
103 test("", 0, 0, "abcdefghijklmnopqrst", 0, 10, -10);
104 test("", 0, 0, "abcdefghijklmnopqrst", 0, 19, -19);
105 test("", 0, 0, "abcdefghijklmnopqrst", 0, 20, -20);
106 test("", 0, 0, "abcdefghijklmnopqrst", 0, 21, -20);
107 test("", 0, 0, "abcdefghijklmnopqrst", 1, 0, 0);
108 test("", 0, 0, "abcdefghijklmnopqrst", 1, 1, -1);
109 test("", 0, 0, "abcdefghijklmnopqrst", 1, 9, -9);
110 test("", 0, 0, "abcdefghijklmnopqrst", 1, 18, -18);
111 test("", 0, 0, "abcdefghijklmnopqrst", 1, 19, -19);
112 test("", 0, 0, "abcdefghijklmnopqrst", 1, 20, -19);
113 test("", 0, 0, "abcdefghijklmnopqrst", 10, 0, 0);
114 test("", 0, 0, "abcdefghijklmnopqrst", 10, 1, -1);
115 test("", 0, 0, "abcdefghijklmnopqrst", 10, 5, -5);
116 test("", 0, 0, "abcdefghijklmnopqrst", 10, 9, -9);
117 test("", 0, 0, "abcdefghijklmnopqrst", 10, 10, -10);
118 test("", 0, 0, "abcdefghijklmnopqrst", 10, 11, -10);
119 test("", 0, 0, "abcdefghijklmnopqrst", 19, 0, 0);
120 test("", 0, 0, "abcdefghijklmnopqrst", 19, 1, -1);
121 test("", 0, 0, "abcdefghijklmnopqrst", 19, 2, -1);
122 test("", 0, 0, "abcdefghijklmnopqrst", 20, 0, 0);
123 test("", 0, 0, "abcdefghijklmnopqrst", 20, 1, 0);
124 test("", 0, 0, "abcdefghijklmnopqrst", 21, 0, 0);
125 test("", 0, 1, "", 0, 0, 0);
126 test("", 0, 1, "", 0, 1, 0);
127 test("", 0, 1, "", 1, 0, 0);
128 test("", 0, 1, "abcde", 0, 0, 0);
129 test("", 0, 1, "abcde", 0, 1, -1);
130 test("", 0, 1, "abcde", 0, 2, -2);
131 test("", 0, 1, "abcde", 0, 4, -4);
132 test("", 0, 1, "abcde", 0, 5, -5);
133 test("", 0, 1, "abcde", 0, 6, -5);
134 test("", 0, 1, "abcde", 1, 0, 0);
135 test("", 0, 1, "abcde", 1, 1, -1);
136 test("", 0, 1, "abcde", 1, 2, -2);
137 test("", 0, 1, "abcde", 1, 3, -3);
138 test("", 0, 1, "abcde", 1, 4, -4);
139 test("", 0, 1, "abcde", 1, 5, -4);
140 test("", 0, 1, "abcde", 2, 0, 0);
141 test("", 0, 1, "abcde", 2, 1, -1);
142 test("", 0, 1, "abcde", 2, 2, -2);
143 test("", 0, 1, "abcde", 2, 3, -3);
144 test("", 0, 1, "abcde", 2, 4, -3);
145 test("", 0, 1, "abcde", 4, 0, 0);
146 test("", 0, 1, "abcde", 4, 1, -1);
147 test("", 0, 1, "abcde", 4, 2, -1);
148 test("", 0, 1, "abcde", 5, 0, 0);
149 test("", 0, 1, "abcde", 5, 1, 0);
150 test("", 0, 1, "abcde", 6, 0, 0);
151}
152
153void test1()
154{
155 test("", 0, 1, "abcdefghij", 0, 0, 0);
156 test("", 0, 1, "abcdefghij", 0, 1, -1);
157 test("", 0, 1, "abcdefghij", 0, 5, -5);
158 test("", 0, 1, "abcdefghij", 0, 9, -9);
159 test("", 0, 1, "abcdefghij", 0, 10, -10);
160 test("", 0, 1, "abcdefghij", 0, 11, -10);
161 test("", 0, 1, "abcdefghij", 1, 0, 0);
162 test("", 0, 1, "abcdefghij", 1, 1, -1);
163 test("", 0, 1, "abcdefghij", 1, 4, -4);
164 test("", 0, 1, "abcdefghij", 1, 8, -8);
165 test("", 0, 1, "abcdefghij", 1, 9, -9);
166 test("", 0, 1, "abcdefghij", 1, 10, -9);
167 test("", 0, 1, "abcdefghij", 5, 0, 0);
168 test("", 0, 1, "abcdefghij", 5, 1, -1);
169 test("", 0, 1, "abcdefghij", 5, 2, -2);
170 test("", 0, 1, "abcdefghij", 5, 4, -4);
171 test("", 0, 1, "abcdefghij", 5, 5, -5);
172 test("", 0, 1, "abcdefghij", 5, 6, -5);
173 test("", 0, 1, "abcdefghij", 9, 0, 0);
174 test("", 0, 1, "abcdefghij", 9, 1, -1);
175 test("", 0, 1, "abcdefghij", 9, 2, -1);
176 test("", 0, 1, "abcdefghij", 10, 0, 0);
177 test("", 0, 1, "abcdefghij", 10, 1, 0);
178 test("", 0, 1, "abcdefghij", 11, 0, 0);
179 test("", 0, 1, "abcdefghijklmnopqrst", 0, 0, 0);
180 test("", 0, 1, "abcdefghijklmnopqrst", 0, 1, -1);
181 test("", 0, 1, "abcdefghijklmnopqrst", 0, 10, -10);
182 test("", 0, 1, "abcdefghijklmnopqrst", 0, 19, -19);
183 test("", 0, 1, "abcdefghijklmnopqrst", 0, 20, -20);
184 test("", 0, 1, "abcdefghijklmnopqrst", 0, 21, -20);
185 test("", 0, 1, "abcdefghijklmnopqrst", 1, 0, 0);
186 test("", 0, 1, "abcdefghijklmnopqrst", 1, 1, -1);
187 test("", 0, 1, "abcdefghijklmnopqrst", 1, 9, -9);
188 test("", 0, 1, "abcdefghijklmnopqrst", 1, 18, -18);
189 test("", 0, 1, "abcdefghijklmnopqrst", 1, 19, -19);
190 test("", 0, 1, "abcdefghijklmnopqrst", 1, 20, -19);
191 test("", 0, 1, "abcdefghijklmnopqrst", 10, 0, 0);
192 test("", 0, 1, "abcdefghijklmnopqrst", 10, 1, -1);
193 test("", 0, 1, "abcdefghijklmnopqrst", 10, 5, -5);
194 test("", 0, 1, "abcdefghijklmnopqrst", 10, 9, -9);
195 test("", 0, 1, "abcdefghijklmnopqrst", 10, 10, -10);
196 test("", 0, 1, "abcdefghijklmnopqrst", 10, 11, -10);
197 test("", 0, 1, "abcdefghijklmnopqrst", 19, 0, 0);
198 test("", 0, 1, "abcdefghijklmnopqrst", 19, 1, -1);
199 test("", 0, 1, "abcdefghijklmnopqrst", 19, 2, -1);
200 test("", 0, 1, "abcdefghijklmnopqrst", 20, 0, 0);
201 test("", 0, 1, "abcdefghijklmnopqrst", 20, 1, 0);
202 test("", 0, 1, "abcdefghijklmnopqrst", 21, 0, 0);
203 test("", 1, 0, "", 0, 0, 0);
204 test("", 1, 0, "", 0, 1, 0);
205 test("", 1, 0, "", 1, 0, 0);
206 test("", 1, 0, "abcde", 0, 0, 0);
207 test("", 1, 0, "abcde", 0, 1, 0);
208 test("", 1, 0, "abcde", 0, 2, 0);
209 test("", 1, 0, "abcde", 0, 4, 0);
210 test("", 1, 0, "abcde", 0, 5, 0);
211 test("", 1, 0, "abcde", 0, 6, 0);
212 test("", 1, 0, "abcde", 1, 0, 0);
213 test("", 1, 0, "abcde", 1, 1, 0);
214 test("", 1, 0, "abcde", 1, 2, 0);
215 test("", 1, 0, "abcde", 1, 3, 0);
216 test("", 1, 0, "abcde", 1, 4, 0);
217 test("", 1, 0, "abcde", 1, 5, 0);
218 test("", 1, 0, "abcde", 2, 0, 0);
219 test("", 1, 0, "abcde", 2, 1, 0);
220 test("", 1, 0, "abcde", 2, 2, 0);
221 test("", 1, 0, "abcde", 2, 3, 0);
222 test("", 1, 0, "abcde", 2, 4, 0);
223 test("", 1, 0, "abcde", 4, 0, 0);
224 test("", 1, 0, "abcde", 4, 1, 0);
225 test("", 1, 0, "abcde", 4, 2, 0);
226 test("", 1, 0, "abcde", 5, 0, 0);
227 test("", 1, 0, "abcde", 5, 1, 0);
228 test("", 1, 0, "abcde", 6, 0, 0);
229 test("", 1, 0, "abcdefghij", 0, 0, 0);
230 test("", 1, 0, "abcdefghij", 0, 1, 0);
231 test("", 1, 0, "abcdefghij", 0, 5, 0);
232 test("", 1, 0, "abcdefghij", 0, 9, 0);
233 test("", 1, 0, "abcdefghij", 0, 10, 0);
234 test("", 1, 0, "abcdefghij", 0, 11, 0);
235 test("", 1, 0, "abcdefghij", 1, 0, 0);
236 test("", 1, 0, "abcdefghij", 1, 1, 0);
237 test("", 1, 0, "abcdefghij", 1, 4, 0);
238 test("", 1, 0, "abcdefghij", 1, 8, 0);
239 test("", 1, 0, "abcdefghij", 1, 9, 0);
240 test("", 1, 0, "abcdefghij", 1, 10, 0);
241 test("", 1, 0, "abcdefghij", 5, 0, 0);
242 test("", 1, 0, "abcdefghij", 5, 1, 0);
243 test("", 1, 0, "abcdefghij", 5, 2, 0);
244 test("", 1, 0, "abcdefghij", 5, 4, 0);
245 test("", 1, 0, "abcdefghij", 5, 5, 0);
246 test("", 1, 0, "abcdefghij", 5, 6, 0);
247 test("", 1, 0, "abcdefghij", 9, 0, 0);
248 test("", 1, 0, "abcdefghij", 9, 1, 0);
249 test("", 1, 0, "abcdefghij", 9, 2, 0);
250 test("", 1, 0, "abcdefghij", 10, 0, 0);
251 test("", 1, 0, "abcdefghij", 10, 1, 0);
252 test("", 1, 0, "abcdefghij", 11, 0, 0);
253 test("", 1, 0, "abcdefghijklmnopqrst", 0, 0, 0);
254 test("", 1, 0, "abcdefghijklmnopqrst", 0, 1, 0);
255}
256
257void test2()
258{
259 test("", 1, 0, "abcdefghijklmnopqrst", 0, 10, 0);
260 test("", 1, 0, "abcdefghijklmnopqrst", 0, 19, 0);
261 test("", 1, 0, "abcdefghijklmnopqrst", 0, 20, 0);
262 test("", 1, 0, "abcdefghijklmnopqrst", 0, 21, 0);
263 test("", 1, 0, "abcdefghijklmnopqrst", 1, 0, 0);
264 test("", 1, 0, "abcdefghijklmnopqrst", 1, 1, 0);
265 test("", 1, 0, "abcdefghijklmnopqrst", 1, 9, 0);
266 test("", 1, 0, "abcdefghijklmnopqrst", 1, 18, 0);
267 test("", 1, 0, "abcdefghijklmnopqrst", 1, 19, 0);
268 test("", 1, 0, "abcdefghijklmnopqrst", 1, 20, 0);
269 test("", 1, 0, "abcdefghijklmnopqrst", 10, 0, 0);
270 test("", 1, 0, "abcdefghijklmnopqrst", 10, 1, 0);
271 test("", 1, 0, "abcdefghijklmnopqrst", 10, 5, 0);
272 test("", 1, 0, "abcdefghijklmnopqrst", 10, 9, 0);
273 test("", 1, 0, "abcdefghijklmnopqrst", 10, 10, 0);
274 test("", 1, 0, "abcdefghijklmnopqrst", 10, 11, 0);
275 test("", 1, 0, "abcdefghijklmnopqrst", 19, 0, 0);
276 test("", 1, 0, "abcdefghijklmnopqrst", 19, 1, 0);
277 test("", 1, 0, "abcdefghijklmnopqrst", 19, 2, 0);
278 test("", 1, 0, "abcdefghijklmnopqrst", 20, 0, 0);
279 test("", 1, 0, "abcdefghijklmnopqrst", 20, 1, 0);
280 test("", 1, 0, "abcdefghijklmnopqrst", 21, 0, 0);
281 test("abcde", 0, 0, "", 0, 0, 0);
282 test("abcde", 0, 0, "", 0, 1, 0);
283 test("abcde", 0, 0, "", 1, 0, 0);
284 test("abcde", 0, 0, "abcde", 0, 0, 0);
285 test("abcde", 0, 0, "abcde", 0, 1, -1);
286 test("abcde", 0, 0, "abcde", 0, 2, -2);
287 test("abcde", 0, 0, "abcde", 0, 4, -4);
288 test("abcde", 0, 0, "abcde", 0, 5, -5);
289 test("abcde", 0, 0, "abcde", 0, 6, -5);
290 test("abcde", 0, 0, "abcde", 1, 0, 0);
291 test("abcde", 0, 0, "abcde", 1, 1, -1);
292 test("abcde", 0, 0, "abcde", 1, 2, -2);
293 test("abcde", 0, 0, "abcde", 1, 3, -3);
294 test("abcde", 0, 0, "abcde", 1, 4, -4);
295 test("abcde", 0, 0, "abcde", 1, 5, -4);
296 test("abcde", 0, 0, "abcde", 2, 0, 0);
297 test("abcde", 0, 0, "abcde", 2, 1, -1);
298 test("abcde", 0, 0, "abcde", 2, 2, -2);
299 test("abcde", 0, 0, "abcde", 2, 3, -3);
300 test("abcde", 0, 0, "abcde", 2, 4, -3);
301 test("abcde", 0, 0, "abcde", 4, 0, 0);
302 test("abcde", 0, 0, "abcde", 4, 1, -1);
303 test("abcde", 0, 0, "abcde", 4, 2, -1);
304 test("abcde", 0, 0, "abcde", 5, 0, 0);
305 test("abcde", 0, 0, "abcde", 5, 1, 0);
306 test("abcde", 0, 0, "abcde", 6, 0, 0);
307 test("abcde", 0, 0, "abcdefghij", 0, 0, 0);
308 test("abcde", 0, 0, "abcdefghij", 0, 1, -1);
309 test("abcde", 0, 0, "abcdefghij", 0, 5, -5);
310 test("abcde", 0, 0, "abcdefghij", 0, 9, -9);
311 test("abcde", 0, 0, "abcdefghij", 0, 10, -10);
312 test("abcde", 0, 0, "abcdefghij", 0, 11, -10);
313 test("abcde", 0, 0, "abcdefghij", 1, 0, 0);
314 test("abcde", 0, 0, "abcdefghij", 1, 1, -1);
315 test("abcde", 0, 0, "abcdefghij", 1, 4, -4);
316 test("abcde", 0, 0, "abcdefghij", 1, 8, -8);
317 test("abcde", 0, 0, "abcdefghij", 1, 9, -9);
318 test("abcde", 0, 0, "abcdefghij", 1, 10, -9);
319 test("abcde", 0, 0, "abcdefghij", 5, 0, 0);
320 test("abcde", 0, 0, "abcdefghij", 5, 1, -1);
321 test("abcde", 0, 0, "abcdefghij", 5, 2, -2);
322 test("abcde", 0, 0, "abcdefghij", 5, 4, -4);
323 test("abcde", 0, 0, "abcdefghij", 5, 5, -5);
324 test("abcde", 0, 0, "abcdefghij", 5, 6, -5);
325 test("abcde", 0, 0, "abcdefghij", 9, 0, 0);
326 test("abcde", 0, 0, "abcdefghij", 9, 1, -1);
327 test("abcde", 0, 0, "abcdefghij", 9, 2, -1);
328 test("abcde", 0, 0, "abcdefghij", 10, 0, 0);
329 test("abcde", 0, 0, "abcdefghij", 10, 1, 0);
330 test("abcde", 0, 0, "abcdefghij", 11, 0, 0);
331 test("abcde", 0, 0, "abcdefghijklmnopqrst", 0, 0, 0);
332 test("abcde", 0, 0, "abcdefghijklmnopqrst", 0, 1, -1);
333 test("abcde", 0, 0, "abcdefghijklmnopqrst", 0, 10, -10);
334 test("abcde", 0, 0, "abcdefghijklmnopqrst", 0, 19, -19);
335 test("abcde", 0, 0, "abcdefghijklmnopqrst", 0, 20, -20);
336 test("abcde", 0, 0, "abcdefghijklmnopqrst", 0, 21, -20);
337 test("abcde", 0, 0, "abcdefghijklmnopqrst", 1, 0, 0);
338 test("abcde", 0, 0, "abcdefghijklmnopqrst", 1, 1, -1);
339 test("abcde", 0, 0, "abcdefghijklmnopqrst", 1, 9, -9);
340 test("abcde", 0, 0, "abcdefghijklmnopqrst", 1, 18, -18);
341 test("abcde", 0, 0, "abcdefghijklmnopqrst", 1, 19, -19);
342 test("abcde", 0, 0, "abcdefghijklmnopqrst", 1, 20, -19);
343 test("abcde", 0, 0, "abcdefghijklmnopqrst", 10, 0, 0);
344 test("abcde", 0, 0, "abcdefghijklmnopqrst", 10, 1, -1);
345 test("abcde", 0, 0, "abcdefghijklmnopqrst", 10, 5, -5);
346 test("abcde", 0, 0, "abcdefghijklmnopqrst", 10, 9, -9);
347 test("abcde", 0, 0, "abcdefghijklmnopqrst", 10, 10, -10);
348 test("abcde", 0, 0, "abcdefghijklmnopqrst", 10, 11, -10);
349 test("abcde", 0, 0, "abcdefghijklmnopqrst", 19, 0, 0);
350 test("abcde", 0, 0, "abcdefghijklmnopqrst", 19, 1, -1);
351 test("abcde", 0, 0, "abcdefghijklmnopqrst", 19, 2, -1);
352 test("abcde", 0, 0, "abcdefghijklmnopqrst", 20, 0, 0);
353 test("abcde", 0, 0, "abcdefghijklmnopqrst", 20, 1, 0);
354 test("abcde", 0, 0, "abcdefghijklmnopqrst", 21, 0, 0);
355 test("abcde", 0, 1, "", 0, 0, 1);
356 test("abcde", 0, 1, "", 0, 1, 1);
357 test("abcde", 0, 1, "", 1, 0, 0);
358 test("abcde", 0, 1, "abcde", 0, 0, 1);
359}
360
361void test3()
362{
363 test("abcde", 0, 1, "abcde", 0, 1, 0);
364 test("abcde", 0, 1, "abcde", 0, 2, -1);
365 test("abcde", 0, 1, "abcde", 0, 4, -3);
366 test("abcde", 0, 1, "abcde", 0, 5, -4);
367 test("abcde", 0, 1, "abcde", 0, 6, -4);
368 test("abcde", 0, 1, "abcde", 1, 0, 1);
369 test("abcde", 0, 1, "abcde", 1, 1, -1);
370 test("abcde", 0, 1, "abcde", 1, 2, -1);
371 test("abcde", 0, 1, "abcde", 1, 3, -1);
372 test("abcde", 0, 1, "abcde", 1, 4, -1);
373 test("abcde", 0, 1, "abcde", 1, 5, -1);
374 test("abcde", 0, 1, "abcde", 2, 0, 1);
375 test("abcde", 0, 1, "abcde", 2, 1, -2);
376 test("abcde", 0, 1, "abcde", 2, 2, -2);
377 test("abcde", 0, 1, "abcde", 2, 3, -2);
378 test("abcde", 0, 1, "abcde", 2, 4, -2);
379 test("abcde", 0, 1, "abcde", 4, 0, 1);
380 test("abcde", 0, 1, "abcde", 4, 1, -4);
381 test("abcde", 0, 1, "abcde", 4, 2, -4);
382 test("abcde", 0, 1, "abcde", 5, 0, 1);
383 test("abcde", 0, 1, "abcde", 5, 1, 1);
384 test("abcde", 0, 1, "abcde", 6, 0, 0);
385 test("abcde", 0, 1, "abcdefghij", 0, 0, 1);
386 test("abcde", 0, 1, "abcdefghij", 0, 1, 0);
387 test("abcde", 0, 1, "abcdefghij", 0, 5, -4);
388 test("abcde", 0, 1, "abcdefghij", 0, 9, -8);
389 test("abcde", 0, 1, "abcdefghij", 0, 10, -9);
390 test("abcde", 0, 1, "abcdefghij", 0, 11, -9);
391 test("abcde", 0, 1, "abcdefghij", 1, 0, 1);
392 test("abcde", 0, 1, "abcdefghij", 1, 1, -1);
393 test("abcde", 0, 1, "abcdefghij", 1, 4, -1);
394 test("abcde", 0, 1, "abcdefghij", 1, 8, -1);
395 test("abcde", 0, 1, "abcdefghij", 1, 9, -1);
396 test("abcde", 0, 1, "abcdefghij", 1, 10, -1);
397 test("abcde", 0, 1, "abcdefghij", 5, 0, 1);
398 test("abcde", 0, 1, "abcdefghij", 5, 1, -5);
399 test("abcde", 0, 1, "abcdefghij", 5, 2, -5);
400 test("abcde", 0, 1, "abcdefghij", 5, 4, -5);
401 test("abcde", 0, 1, "abcdefghij", 5, 5, -5);
402 test("abcde", 0, 1, "abcdefghij", 5, 6, -5);
403 test("abcde", 0, 1, "abcdefghij", 9, 0, 1);
404 test("abcde", 0, 1, "abcdefghij", 9, 1, -9);
405 test("abcde", 0, 1, "abcdefghij", 9, 2, -9);
406 test("abcde", 0, 1, "abcdefghij", 10, 0, 1);
407 test("abcde", 0, 1, "abcdefghij", 10, 1, 1);
408 test("abcde", 0, 1, "abcdefghij", 11, 0, 0);
409 test("abcde", 0, 1, "abcdefghijklmnopqrst", 0, 0, 1);
410 test("abcde", 0, 1, "abcdefghijklmnopqrst", 0, 1, 0);
411 test("abcde", 0, 1, "abcdefghijklmnopqrst", 0, 10, -9);
412 test("abcde", 0, 1, "abcdefghijklmnopqrst", 0, 19, -18);
413 test("abcde", 0, 1, "abcdefghijklmnopqrst", 0, 20, -19);
414 test("abcde", 0, 1, "abcdefghijklmnopqrst", 0, 21, -19);
415 test("abcde", 0, 1, "abcdefghijklmnopqrst", 1, 0, 1);
416 test("abcde", 0, 1, "abcdefghijklmnopqrst", 1, 1, -1);
417 test("abcde", 0, 1, "abcdefghijklmnopqrst", 1, 9, -1);
418 test("abcde", 0, 1, "abcdefghijklmnopqrst", 1, 18, -1);
419 test("abcde", 0, 1, "abcdefghijklmnopqrst", 1, 19, -1);
420 test("abcde", 0, 1, "abcdefghijklmnopqrst", 1, 20, -1);
421 test("abcde", 0, 1, "abcdefghijklmnopqrst", 10, 0, 1);
422 test("abcde", 0, 1, "abcdefghijklmnopqrst", 10, 1, -10);
423 test("abcde", 0, 1, "abcdefghijklmnopqrst", 10, 5, -10);
424 test("abcde", 0, 1, "abcdefghijklmnopqrst", 10, 9, -10);
425 test("abcde", 0, 1, "abcdefghijklmnopqrst", 10, 10, -10);
426 test("abcde", 0, 1, "abcdefghijklmnopqrst", 10, 11, -10);
427 test("abcde", 0, 1, "abcdefghijklmnopqrst", 19, 0, 1);
428 test("abcde", 0, 1, "abcdefghijklmnopqrst", 19, 1, -19);
429 test("abcde", 0, 1, "abcdefghijklmnopqrst", 19, 2, -19);
430 test("abcde", 0, 1, "abcdefghijklmnopqrst", 20, 0, 1);
431 test("abcde", 0, 1, "abcdefghijklmnopqrst", 20, 1, 1);
432 test("abcde", 0, 1, "abcdefghijklmnopqrst", 21, 0, 0);
433 test("abcde", 0, 2, "", 0, 0, 2);
434 test("abcde", 0, 2, "", 0, 1, 2);
435 test("abcde", 0, 2, "", 1, 0, 0);
436 test("abcde", 0, 2, "abcde", 0, 0, 2);
437 test("abcde", 0, 2, "abcde", 0, 1, 1);
438 test("abcde", 0, 2, "abcde", 0, 2, 0);
439 test("abcde", 0, 2, "abcde", 0, 4, -2);
440 test("abcde", 0, 2, "abcde", 0, 5, -3);
441 test("abcde", 0, 2, "abcde", 0, 6, -3);
442 test("abcde", 0, 2, "abcde", 1, 0, 2);
443 test("abcde", 0, 2, "abcde", 1, 1, -1);
444 test("abcde", 0, 2, "abcde", 1, 2, -1);
445 test("abcde", 0, 2, "abcde", 1, 3, -1);
446 test("abcde", 0, 2, "abcde", 1, 4, -1);
447 test("abcde", 0, 2, "abcde", 1, 5, -1);
448 test("abcde", 0, 2, "abcde", 2, 0, 2);
449 test("abcde", 0, 2, "abcde", 2, 1, -2);
450 test("abcde", 0, 2, "abcde", 2, 2, -2);
451 test("abcde", 0, 2, "abcde", 2, 3, -2);
452 test("abcde", 0, 2, "abcde", 2, 4, -2);
453 test("abcde", 0, 2, "abcde", 4, 0, 2);
454 test("abcde", 0, 2, "abcde", 4, 1, -4);
455 test("abcde", 0, 2, "abcde", 4, 2, -4);
456 test("abcde", 0, 2, "abcde", 5, 0, 2);
457 test("abcde", 0, 2, "abcde", 5, 1, 2);
458 test("abcde", 0, 2, "abcde", 6, 0, 0);
459 test("abcde", 0, 2, "abcdefghij", 0, 0, 2);
460 test("abcde", 0, 2, "abcdefghij", 0, 1, 1);
461 test("abcde", 0, 2, "abcdefghij", 0, 5, -3);
462 test("abcde", 0, 2, "abcdefghij", 0, 9, -7);
463}
464
465void test4()
466{
467 test("abcde", 0, 2, "abcdefghij", 0, 10, -8);
468 test("abcde", 0, 2, "abcdefghij", 0, 11, -8);
469 test("abcde", 0, 2, "abcdefghij", 1, 0, 2);
470 test("abcde", 0, 2, "abcdefghij", 1, 1, -1);
471 test("abcde", 0, 2, "abcdefghij", 1, 4, -1);
472 test("abcde", 0, 2, "abcdefghij", 1, 8, -1);
473 test("abcde", 0, 2, "abcdefghij", 1, 9, -1);
474 test("abcde", 0, 2, "abcdefghij", 1, 10, -1);
475 test("abcde", 0, 2, "abcdefghij", 5, 0, 2);
476 test("abcde", 0, 2, "abcdefghij", 5, 1, -5);
477 test("abcde", 0, 2, "abcdefghij", 5, 2, -5);
478 test("abcde", 0, 2, "abcdefghij", 5, 4, -5);
479 test("abcde", 0, 2, "abcdefghij", 5, 5, -5);
480 test("abcde", 0, 2, "abcdefghij", 5, 6, -5);
481 test("abcde", 0, 2, "abcdefghij", 9, 0, 2);
482 test("abcde", 0, 2, "abcdefghij", 9, 1, -9);
483 test("abcde", 0, 2, "abcdefghij", 9, 2, -9);
484 test("abcde", 0, 2, "abcdefghij", 10, 0, 2);
485 test("abcde", 0, 2, "abcdefghij", 10, 1, 2);
486 test("abcde", 0, 2, "abcdefghij", 11, 0, 0);
487 test("abcde", 0, 2, "abcdefghijklmnopqrst", 0, 0, 2);
488 test("abcde", 0, 2, "abcdefghijklmnopqrst", 0, 1, 1);
489 test("abcde", 0, 2, "abcdefghijklmnopqrst", 0, 10, -8);
490 test("abcde", 0, 2, "abcdefghijklmnopqrst", 0, 19, -17);
491 test("abcde", 0, 2, "abcdefghijklmnopqrst", 0, 20, -18);
492 test("abcde", 0, 2, "abcdefghijklmnopqrst", 0, 21, -18);
493 test("abcde", 0, 2, "abcdefghijklmnopqrst", 1, 0, 2);
494 test("abcde", 0, 2, "abcdefghijklmnopqrst", 1, 1, -1);
495 test("abcde", 0, 2, "abcdefghijklmnopqrst", 1, 9, -1);
496 test("abcde", 0, 2, "abcdefghijklmnopqrst", 1, 18, -1);
497 test("abcde", 0, 2, "abcdefghijklmnopqrst", 1, 19, -1);
498 test("abcde", 0, 2, "abcdefghijklmnopqrst", 1, 20, -1);
499 test("abcde", 0, 2, "abcdefghijklmnopqrst", 10, 0, 2);
500 test("abcde", 0, 2, "abcdefghijklmnopqrst", 10, 1, -10);
501 test("abcde", 0, 2, "abcdefghijklmnopqrst", 10, 5, -10);
502 test("abcde", 0, 2, "abcdefghijklmnopqrst", 10, 9, -10);
503 test("abcde", 0, 2, "abcdefghijklmnopqrst", 10, 10, -10);
504 test("abcde", 0, 2, "abcdefghijklmnopqrst", 10, 11, -10);
505 test("abcde", 0, 2, "abcdefghijklmnopqrst", 19, 0, 2);
506 test("abcde", 0, 2, "abcdefghijklmnopqrst", 19, 1, -19);
507 test("abcde", 0, 2, "abcdefghijklmnopqrst", 19, 2, -19);
508 test("abcde", 0, 2, "abcdefghijklmnopqrst", 20, 0, 2);
509 test("abcde", 0, 2, "abcdefghijklmnopqrst", 20, 1, 2);
510 test("abcde", 0, 2, "abcdefghijklmnopqrst", 21, 0, 0);
511 test("abcde", 0, 4, "", 0, 0, 4);
512 test("abcde", 0, 4, "", 0, 1, 4);
513 test("abcde", 0, 4, "", 1, 0, 0);
514 test("abcde", 0, 4, "abcde", 0, 0, 4);
515 test("abcde", 0, 4, "abcde", 0, 1, 3);
516 test("abcde", 0, 4, "abcde", 0, 2, 2);
517 test("abcde", 0, 4, "abcde", 0, 4, 0);
518 test("abcde", 0, 4, "abcde", 0, 5, -1);
519 test("abcde", 0, 4, "abcde", 0, 6, -1);
520 test("abcde", 0, 4, "abcde", 1, 0, 4);
521 test("abcde", 0, 4, "abcde", 1, 1, -1);
522 test("abcde", 0, 4, "abcde", 1, 2, -1);
523 test("abcde", 0, 4, "abcde", 1, 3, -1);
524 test("abcde", 0, 4, "abcde", 1, 4, -1);
525 test("abcde", 0, 4, "abcde", 1, 5, -1);
526 test("abcde", 0, 4, "abcde", 2, 0, 4);
527 test("abcde", 0, 4, "abcde", 2, 1, -2);
528 test("abcde", 0, 4, "abcde", 2, 2, -2);
529 test("abcde", 0, 4, "abcde", 2, 3, -2);
530 test("abcde", 0, 4, "abcde", 2, 4, -2);
531 test("abcde", 0, 4, "abcde", 4, 0, 4);
532 test("abcde", 0, 4, "abcde", 4, 1, -4);
533 test("abcde", 0, 4, "abcde", 4, 2, -4);
534 test("abcde", 0, 4, "abcde", 5, 0, 4);
535 test("abcde", 0, 4, "abcde", 5, 1, 4);
536 test("abcde", 0, 4, "abcde", 6, 0, 0);
537 test("abcde", 0, 4, "abcdefghij", 0, 0, 4);
538 test("abcde", 0, 4, "abcdefghij", 0, 1, 3);
539 test("abcde", 0, 4, "abcdefghij", 0, 5, -1);
540 test("abcde", 0, 4, "abcdefghij", 0, 9, -5);
541 test("abcde", 0, 4, "abcdefghij", 0, 10, -6);
542 test("abcde", 0, 4, "abcdefghij", 0, 11, -6);
543 test("abcde", 0, 4, "abcdefghij", 1, 0, 4);
544 test("abcde", 0, 4, "abcdefghij", 1, 1, -1);
545 test("abcde", 0, 4, "abcdefghij", 1, 4, -1);
546 test("abcde", 0, 4, "abcdefghij", 1, 8, -1);
547 test("abcde", 0, 4, "abcdefghij", 1, 9, -1);
548 test("abcde", 0, 4, "abcdefghij", 1, 10, -1);
549 test("abcde", 0, 4, "abcdefghij", 5, 0, 4);
550 test("abcde", 0, 4, "abcdefghij", 5, 1, -5);
551 test("abcde", 0, 4, "abcdefghij", 5, 2, -5);
552 test("abcde", 0, 4, "abcdefghij", 5, 4, -5);
553 test("abcde", 0, 4, "abcdefghij", 5, 5, -5);
554 test("abcde", 0, 4, "abcdefghij", 5, 6, -5);
555 test("abcde", 0, 4, "abcdefghij", 9, 0, 4);
556 test("abcde", 0, 4, "abcdefghij", 9, 1, -9);
557 test("abcde", 0, 4, "abcdefghij", 9, 2, -9);
558 test("abcde", 0, 4, "abcdefghij", 10, 0, 4);
559 test("abcde", 0, 4, "abcdefghij", 10, 1, 4);
560 test("abcde", 0, 4, "abcdefghij", 11, 0, 0);
561 test("abcde", 0, 4, "abcdefghijklmnopqrst", 0, 0, 4);
562 test("abcde", 0, 4, "abcdefghijklmnopqrst", 0, 1, 3);
563 test("abcde", 0, 4, "abcdefghijklmnopqrst", 0, 10, -6);
564 test("abcde", 0, 4, "abcdefghijklmnopqrst", 0, 19, -15);
565 test("abcde", 0, 4, "abcdefghijklmnopqrst", 0, 20, -16);
566 test("abcde", 0, 4, "abcdefghijklmnopqrst", 0, 21, -16);
567}
568
569void test5()
570{
571 test("abcde", 0, 4, "abcdefghijklmnopqrst", 1, 0, 4);
572 test("abcde", 0, 4, "abcdefghijklmnopqrst", 1, 1, -1);
573 test("abcde", 0, 4, "abcdefghijklmnopqrst", 1, 9, -1);
574 test("abcde", 0, 4, "abcdefghijklmnopqrst", 1, 18, -1);
575 test("abcde", 0, 4, "abcdefghijklmnopqrst", 1, 19, -1);
576 test("abcde", 0, 4, "abcdefghijklmnopqrst", 1, 20, -1);
577 test("abcde", 0, 4, "abcdefghijklmnopqrst", 10, 0, 4);
578 test("abcde", 0, 4, "abcdefghijklmnopqrst", 10, 1, -10);
579 test("abcde", 0, 4, "abcdefghijklmnopqrst", 10, 5, -10);
580 test("abcde", 0, 4, "abcdefghijklmnopqrst", 10, 9, -10);
581 test("abcde", 0, 4, "abcdefghijklmnopqrst", 10, 10, -10);
582 test("abcde", 0, 4, "abcdefghijklmnopqrst", 10, 11, -10);
583 test("abcde", 0, 4, "abcdefghijklmnopqrst", 19, 0, 4);
584 test("abcde", 0, 4, "abcdefghijklmnopqrst", 19, 1, -19);
585 test("abcde", 0, 4, "abcdefghijklmnopqrst", 19, 2, -19);
586 test("abcde", 0, 4, "abcdefghijklmnopqrst", 20, 0, 4);
587 test("abcde", 0, 4, "abcdefghijklmnopqrst", 20, 1, 4);
588 test("abcde", 0, 4, "abcdefghijklmnopqrst", 21, 0, 0);
589 test("abcde", 0, 5, "", 0, 0, 5);
590 test("abcde", 0, 5, "", 0, 1, 5);
591 test("abcde", 0, 5, "", 1, 0, 0);
592 test("abcde", 0, 5, "abcde", 0, 0, 5);
593 test("abcde", 0, 5, "abcde", 0, 1, 4);
594 test("abcde", 0, 5, "abcde", 0, 2, 3);
595 test("abcde", 0, 5, "abcde", 0, 4, 1);
596 test("abcde", 0, 5, "abcde", 0, 5, 0);
597 test("abcde", 0, 5, "abcde", 0, 6, 0);
598 test("abcde", 0, 5, "abcde", 1, 0, 5);
599 test("abcde", 0, 5, "abcde", 1, 1, -1);
600 test("abcde", 0, 5, "abcde", 1, 2, -1);
601 test("abcde", 0, 5, "abcde", 1, 3, -1);
602 test("abcde", 0, 5, "abcde", 1, 4, -1);
603 test("abcde", 0, 5, "abcde", 1, 5, -1);
604 test("abcde", 0, 5, "abcde", 2, 0, 5);
605 test("abcde", 0, 5, "abcde", 2, 1, -2);
606 test("abcde", 0, 5, "abcde", 2, 2, -2);
607 test("abcde", 0, 5, "abcde", 2, 3, -2);
608 test("abcde", 0, 5, "abcde", 2, 4, -2);
609 test("abcde", 0, 5, "abcde", 4, 0, 5);
610 test("abcde", 0, 5, "abcde", 4, 1, -4);
611 test("abcde", 0, 5, "abcde", 4, 2, -4);
612 test("abcde", 0, 5, "abcde", 5, 0, 5);
613 test("abcde", 0, 5, "abcde", 5, 1, 5);
614 test("abcde", 0, 5, "abcde", 6, 0, 0);
615 test("abcde", 0, 5, "abcdefghij", 0, 0, 5);
616 test("abcde", 0, 5, "abcdefghij", 0, 1, 4);
617 test("abcde", 0, 5, "abcdefghij", 0, 5, 0);
618 test("abcde", 0, 5, "abcdefghij", 0, 9, -4);
619 test("abcde", 0, 5, "abcdefghij", 0, 10, -5);
620 test("abcde", 0, 5, "abcdefghij", 0, 11, -5);
621 test("abcde", 0, 5, "abcdefghij", 1, 0, 5);
622 test("abcde", 0, 5, "abcdefghij", 1, 1, -1);
623 test("abcde", 0, 5, "abcdefghij", 1, 4, -1);
624 test("abcde", 0, 5, "abcdefghij", 1, 8, -1);
625 test("abcde", 0, 5, "abcdefghij", 1, 9, -1);
626 test("abcde", 0, 5, "abcdefghij", 1, 10, -1);
627 test("abcde", 0, 5, "abcdefghij", 5, 0, 5);
628 test("abcde", 0, 5, "abcdefghij", 5, 1, -5);
629 test("abcde", 0, 5, "abcdefghij", 5, 2, -5);
630 test("abcde", 0, 5, "abcdefghij", 5, 4, -5);
631 test("abcde", 0, 5, "abcdefghij", 5, 5, -5);
632 test("abcde", 0, 5, "abcdefghij", 5, 6, -5);
633 test("abcde", 0, 5, "abcdefghij", 9, 0, 5);
634 test("abcde", 0, 5, "abcdefghij", 9, 1, -9);
635 test("abcde", 0, 5, "abcdefghij", 9, 2, -9);
636 test("abcde", 0, 5, "abcdefghij", 10, 0, 5);
637 test("abcde", 0, 5, "abcdefghij", 10, 1, 5);
638 test("abcde", 0, 5, "abcdefghij", 11, 0, 0);
639 test("abcde", 0, 5, "abcdefghijklmnopqrst", 0, 0, 5);
640 test("abcde", 0, 5, "abcdefghijklmnopqrst", 0, 1, 4);
641 test("abcde", 0, 5, "abcdefghijklmnopqrst", 0, 10, -5);
642 test("abcde", 0, 5, "abcdefghijklmnopqrst", 0, 19, -14);
643 test("abcde", 0, 5, "abcdefghijklmnopqrst", 0, 20, -15);
644 test("abcde", 0, 5, "abcdefghijklmnopqrst", 0, 21, -15);
645 test("abcde", 0, 5, "abcdefghijklmnopqrst", 1, 0, 5);
646 test("abcde", 0, 5, "abcdefghijklmnopqrst", 1, 1, -1);
647 test("abcde", 0, 5, "abcdefghijklmnopqrst", 1, 9, -1);
648 test("abcde", 0, 5, "abcdefghijklmnopqrst", 1, 18, -1);
649 test("abcde", 0, 5, "abcdefghijklmnopqrst", 1, 19, -1);
650 test("abcde", 0, 5, "abcdefghijklmnopqrst", 1, 20, -1);
651 test("abcde", 0, 5, "abcdefghijklmnopqrst", 10, 0, 5);
652 test("abcde", 0, 5, "abcdefghijklmnopqrst", 10, 1, -10);
653 test("abcde", 0, 5, "abcdefghijklmnopqrst", 10, 5, -10);
654 test("abcde", 0, 5, "abcdefghijklmnopqrst", 10, 9, -10);
655 test("abcde", 0, 5, "abcdefghijklmnopqrst", 10, 10, -10);
656 test("abcde", 0, 5, "abcdefghijklmnopqrst", 10, 11, -10);
657 test("abcde", 0, 5, "abcdefghijklmnopqrst", 19, 0, 5);
658 test("abcde", 0, 5, "abcdefghijklmnopqrst", 19, 1, -19);
659 test("abcde", 0, 5, "abcdefghijklmnopqrst", 19, 2, -19);
660 test("abcde", 0, 5, "abcdefghijklmnopqrst", 20, 0, 5);
661 test("abcde", 0, 5, "abcdefghijklmnopqrst", 20, 1, 5);
662 test("abcde", 0, 5, "abcdefghijklmnopqrst", 21, 0, 0);
663 test("abcde", 0, 6, "", 0, 0, 5);
664 test("abcde", 0, 6, "", 0, 1, 5);
665 test("abcde", 0, 6, "", 1, 0, 0);
666 test("abcde", 0, 6, "abcde", 0, 0, 5);
667 test("abcde", 0, 6, "abcde", 0, 1, 4);
668 test("abcde", 0, 6, "abcde", 0, 2, 3);
669 test("abcde", 0, 6, "abcde", 0, 4, 1);
670 test("abcde", 0, 6, "abcde", 0, 5, 0);
671}
672
673void test6()
674{
675 test("abcde", 0, 6, "abcde", 0, 6, 0);
676 test("abcde", 0, 6, "abcde", 1, 0, 5);
677 test("abcde", 0, 6, "abcde", 1, 1, -1);
678 test("abcde", 0, 6, "abcde", 1, 2, -1);
679 test("abcde", 0, 6, "abcde", 1, 3, -1);
680 test("abcde", 0, 6, "abcde", 1, 4, -1);
681 test("abcde", 0, 6, "abcde", 1, 5, -1);
682 test("abcde", 0, 6, "abcde", 2, 0, 5);
683 test("abcde", 0, 6, "abcde", 2, 1, -2);
684 test("abcde", 0, 6, "abcde", 2, 2, -2);
685 test("abcde", 0, 6, "abcde", 2, 3, -2);
686 test("abcde", 0, 6, "abcde", 2, 4, -2);
687 test("abcde", 0, 6, "abcde", 4, 0, 5);
688 test("abcde", 0, 6, "abcde", 4, 1, -4);
689 test("abcde", 0, 6, "abcde", 4, 2, -4);
690 test("abcde", 0, 6, "abcde", 5, 0, 5);
691 test("abcde", 0, 6, "abcde", 5, 1, 5);
692 test("abcde", 0, 6, "abcde", 6, 0, 0);
693 test("abcde", 0, 6, "abcdefghij", 0, 0, 5);
694 test("abcde", 0, 6, "abcdefghij", 0, 1, 4);
695 test("abcde", 0, 6, "abcdefghij", 0, 5, 0);
696 test("abcde", 0, 6, "abcdefghij", 0, 9, -4);
697 test("abcde", 0, 6, "abcdefghij", 0, 10, -5);
698 test("abcde", 0, 6, "abcdefghij", 0, 11, -5);
699 test("abcde", 0, 6, "abcdefghij", 1, 0, 5);
700 test("abcde", 0, 6, "abcdefghij", 1, 1, -1);
701 test("abcde", 0, 6, "abcdefghij", 1, 4, -1);
702 test("abcde", 0, 6, "abcdefghij", 1, 8, -1);
703 test("abcde", 0, 6, "abcdefghij", 1, 9, -1);
704 test("abcde", 0, 6, "abcdefghij", 1, 10, -1);
705 test("abcde", 0, 6, "abcdefghij", 5, 0, 5);
706 test("abcde", 0, 6, "abcdefghij", 5, 1, -5);
707 test("abcde", 0, 6, "abcdefghij", 5, 2, -5);
708 test("abcde", 0, 6, "abcdefghij", 5, 4, -5);
709 test("abcde", 0, 6, "abcdefghij", 5, 5, -5);
710 test("abcde", 0, 6, "abcdefghij", 5, 6, -5);
711 test("abcde", 0, 6, "abcdefghij", 9, 0, 5);
712 test("abcde", 0, 6, "abcdefghij", 9, 1, -9);
713 test("abcde", 0, 6, "abcdefghij", 9, 2, -9);
714 test("abcde", 0, 6, "abcdefghij", 10, 0, 5);
715 test("abcde", 0, 6, "abcdefghij", 10, 1, 5);
716 test("abcde", 0, 6, "abcdefghij", 11, 0, 0);
717 test("abcde", 0, 6, "abcdefghijklmnopqrst", 0, 0, 5);
718 test("abcde", 0, 6, "abcdefghijklmnopqrst", 0, 1, 4);
719 test("abcde", 0, 6, "abcdefghijklmnopqrst", 0, 10, -5);
720 test("abcde", 0, 6, "abcdefghijklmnopqrst", 0, 19, -14);
721 test("abcde", 0, 6, "abcdefghijklmnopqrst", 0, 20, -15);
722 test("abcde", 0, 6, "abcdefghijklmnopqrst", 0, 21, -15);
723 test("abcde", 0, 6, "abcdefghijklmnopqrst", 1, 0, 5);
724 test("abcde", 0, 6, "abcdefghijklmnopqrst", 1, 1, -1);
725 test("abcde", 0, 6, "abcdefghijklmnopqrst", 1, 9, -1);
726 test("abcde", 0, 6, "abcdefghijklmnopqrst", 1, 18, -1);
727 test("abcde", 0, 6, "abcdefghijklmnopqrst", 1, 19, -1);
728 test("abcde", 0, 6, "abcdefghijklmnopqrst", 1, 20, -1);
729 test("abcde", 0, 6, "abcdefghijklmnopqrst", 10, 0, 5);
730 test("abcde", 0, 6, "abcdefghijklmnopqrst", 10, 1, -10);
731 test("abcde", 0, 6, "abcdefghijklmnopqrst", 10, 5, -10);
732 test("abcde", 0, 6, "abcdefghijklmnopqrst", 10, 9, -10);
733 test("abcde", 0, 6, "abcdefghijklmnopqrst", 10, 10, -10);
734 test("abcde", 0, 6, "abcdefghijklmnopqrst", 10, 11, -10);
735 test("abcde", 0, 6, "abcdefghijklmnopqrst", 19, 0, 5);
736 test("abcde", 0, 6, "abcdefghijklmnopqrst", 19, 1, -19);
737 test("abcde", 0, 6, "abcdefghijklmnopqrst", 19, 2, -19);
738 test("abcde", 0, 6, "abcdefghijklmnopqrst", 20, 0, 5);
739 test("abcde", 0, 6, "abcdefghijklmnopqrst", 20, 1, 5);
740 test("abcde", 0, 6, "abcdefghijklmnopqrst", 21, 0, 0);
741 test("abcde", 1, 0, "", 0, 0, 0);
742 test("abcde", 1, 0, "", 0, 1, 0);
743 test("abcde", 1, 0, "", 1, 0, 0);
744 test("abcde", 1, 0, "abcde", 0, 0, 0);
745 test("abcde", 1, 0, "abcde", 0, 1, -1);
746 test("abcde", 1, 0, "abcde", 0, 2, -2);
747 test("abcde", 1, 0, "abcde", 0, 4, -4);
748 test("abcde", 1, 0, "abcde", 0, 5, -5);
749 test("abcde", 1, 0, "abcde", 0, 6, -5);
750 test("abcde", 1, 0, "abcde", 1, 0, 0);
751 test("abcde", 1, 0, "abcde", 1, 1, -1);
752 test("abcde", 1, 0, "abcde", 1, 2, -2);
753 test("abcde", 1, 0, "abcde", 1, 3, -3);
754 test("abcde", 1, 0, "abcde", 1, 4, -4);
755 test("abcde", 1, 0, "abcde", 1, 5, -4);
756 test("abcde", 1, 0, "abcde", 2, 0, 0);
757 test("abcde", 1, 0, "abcde", 2, 1, -1);
758 test("abcde", 1, 0, "abcde", 2, 2, -2);
759 test("abcde", 1, 0, "abcde", 2, 3, -3);
760 test("abcde", 1, 0, "abcde", 2, 4, -3);
761 test("abcde", 1, 0, "abcde", 4, 0, 0);
762 test("abcde", 1, 0, "abcde", 4, 1, -1);
763 test("abcde", 1, 0, "abcde", 4, 2, -1);
764 test("abcde", 1, 0, "abcde", 5, 0, 0);
765 test("abcde", 1, 0, "abcde", 5, 1, 0);
766 test("abcde", 1, 0, "abcde", 6, 0, 0);
767 test("abcde", 1, 0, "abcdefghij", 0, 0, 0);
768 test("abcde", 1, 0, "abcdefghij", 0, 1, -1);
769 test("abcde", 1, 0, "abcdefghij", 0, 5, -5);
770 test("abcde", 1, 0, "abcdefghij", 0, 9, -9);
771 test("abcde", 1, 0, "abcdefghij", 0, 10, -10);
772 test("abcde", 1, 0, "abcdefghij", 0, 11, -10);
773 test("abcde", 1, 0, "abcdefghij", 1, 0, 0);
774 test("abcde", 1, 0, "abcdefghij", 1, 1, -1);
775}
776
777void test7()
778{
779 test("abcde", 1, 0, "abcdefghij", 1, 4, -4);
780 test("abcde", 1, 0, "abcdefghij", 1, 8, -8);
781 test("abcde", 1, 0, "abcdefghij", 1, 9, -9);
782 test("abcde", 1, 0, "abcdefghij", 1, 10, -9);
783 test("abcde", 1, 0, "abcdefghij", 5, 0, 0);
784 test("abcde", 1, 0, "abcdefghij", 5, 1, -1);
785 test("abcde", 1, 0, "abcdefghij", 5, 2, -2);
786 test("abcde", 1, 0, "abcdefghij", 5, 4, -4);
787 test("abcde", 1, 0, "abcdefghij", 5, 5, -5);
788 test("abcde", 1, 0, "abcdefghij", 5, 6, -5);
789 test("abcde", 1, 0, "abcdefghij", 9, 0, 0);
790 test("abcde", 1, 0, "abcdefghij", 9, 1, -1);
791 test("abcde", 1, 0, "abcdefghij", 9, 2, -1);
792 test("abcde", 1, 0, "abcdefghij", 10, 0, 0);
793 test("abcde", 1, 0, "abcdefghij", 10, 1, 0);
794 test("abcde", 1, 0, "abcdefghij", 11, 0, 0);
795 test("abcde", 1, 0, "abcdefghijklmnopqrst", 0, 0, 0);
796 test("abcde", 1, 0, "abcdefghijklmnopqrst", 0, 1, -1);
797 test("abcde", 1, 0, "abcdefghijklmnopqrst", 0, 10, -10);
798 test("abcde", 1, 0, "abcdefghijklmnopqrst", 0, 19, -19);
799 test("abcde", 1, 0, "abcdefghijklmnopqrst", 0, 20, -20);
800 test("abcde", 1, 0, "abcdefghijklmnopqrst", 0, 21, -20);
801 test("abcde", 1, 0, "abcdefghijklmnopqrst", 1, 0, 0);
802 test("abcde", 1, 0, "abcdefghijklmnopqrst", 1, 1, -1);
803 test("abcde", 1, 0, "abcdefghijklmnopqrst", 1, 9, -9);
804 test("abcde", 1, 0, "abcdefghijklmnopqrst", 1, 18, -18);
805 test("abcde", 1, 0, "abcdefghijklmnopqrst", 1, 19, -19);
806 test("abcde", 1, 0, "abcdefghijklmnopqrst", 1, 20, -19);
807 test("abcde", 1, 0, "abcdefghijklmnopqrst", 10, 0, 0);
808 test("abcde", 1, 0, "abcdefghijklmnopqrst", 10, 1, -1);
809 test("abcde", 1, 0, "abcdefghijklmnopqrst", 10, 5, -5);
810 test("abcde", 1, 0, "abcdefghijklmnopqrst", 10, 9, -9);
811 test("abcde", 1, 0, "abcdefghijklmnopqrst", 10, 10, -10);
812 test("abcde", 1, 0, "abcdefghijklmnopqrst", 10, 11, -10);
813 test("abcde", 1, 0, "abcdefghijklmnopqrst", 19, 0, 0);
814 test("abcde", 1, 0, "abcdefghijklmnopqrst", 19, 1, -1);
815 test("abcde", 1, 0, "abcdefghijklmnopqrst", 19, 2, -1);
816 test("abcde", 1, 0, "abcdefghijklmnopqrst", 20, 0, 0);
817 test("abcde", 1, 0, "abcdefghijklmnopqrst", 20, 1, 0);
818 test("abcde", 1, 0, "abcdefghijklmnopqrst", 21, 0, 0);
819 test("abcde", 1, 1, "", 0, 0, 1);
820 test("abcde", 1, 1, "", 0, 1, 1);
821 test("abcde", 1, 1, "", 1, 0, 0);
822 test("abcde", 1, 1, "abcde", 0, 0, 1);
823 test("abcde", 1, 1, "abcde", 0, 1, 1);
824 test("abcde", 1, 1, "abcde", 0, 2, 1);
825 test("abcde", 1, 1, "abcde", 0, 4, 1);
826 test("abcde", 1, 1, "abcde", 0, 5, 1);
827 test("abcde", 1, 1, "abcde", 0, 6, 1);
828 test("abcde", 1, 1, "abcde", 1, 0, 1);
829 test("abcde", 1, 1, "abcde", 1, 1, 0);
830 test("abcde", 1, 1, "abcde", 1, 2, -1);
831 test("abcde", 1, 1, "abcde", 1, 3, -2);
832 test("abcde", 1, 1, "abcde", 1, 4, -3);
833 test("abcde", 1, 1, "abcde", 1, 5, -3);
834 test("abcde", 1, 1, "abcde", 2, 0, 1);
835 test("abcde", 1, 1, "abcde", 2, 1, -1);
836 test("abcde", 1, 1, "abcde", 2, 2, -1);
837 test("abcde", 1, 1, "abcde", 2, 3, -1);
838 test("abcde", 1, 1, "abcde", 2, 4, -1);
839 test("abcde", 1, 1, "abcde", 4, 0, 1);
840 test("abcde", 1, 1, "abcde", 4, 1, -3);
841 test("abcde", 1, 1, "abcde", 4, 2, -3);
842 test("abcde", 1, 1, "abcde", 5, 0, 1);
843 test("abcde", 1, 1, "abcde", 5, 1, 1);
844 test("abcde", 1, 1, "abcde", 6, 0, 0);
845 test("abcde", 1, 1, "abcdefghij", 0, 0, 1);
846 test("abcde", 1, 1, "abcdefghij", 0, 1, 1);
847 test("abcde", 1, 1, "abcdefghij", 0, 5, 1);
848 test("abcde", 1, 1, "abcdefghij", 0, 9, 1);
849 test("abcde", 1, 1, "abcdefghij", 0, 10, 1);
850 test("abcde", 1, 1, "abcdefghij", 0, 11, 1);
851 test("abcde", 1, 1, "abcdefghij", 1, 0, 1);
852 test("abcde", 1, 1, "abcdefghij", 1, 1, 0);
853 test("abcde", 1, 1, "abcdefghij", 1, 4, -3);
854 test("abcde", 1, 1, "abcdefghij", 1, 8, -7);
855 test("abcde", 1, 1, "abcdefghij", 1, 9, -8);
856 test("abcde", 1, 1, "abcdefghij", 1, 10, -8);
857 test("abcde", 1, 1, "abcdefghij", 5, 0, 1);
858 test("abcde", 1, 1, "abcdefghij", 5, 1, -4);
859 test("abcde", 1, 1, "abcdefghij", 5, 2, -4);
860 test("abcde", 1, 1, "abcdefghij", 5, 4, -4);
861 test("abcde", 1, 1, "abcdefghij", 5, 5, -4);
862 test("abcde", 1, 1, "abcdefghij", 5, 6, -4);
863 test("abcde", 1, 1, "abcdefghij", 9, 0, 1);
864 test("abcde", 1, 1, "abcdefghij", 9, 1, -8);
865 test("abcde", 1, 1, "abcdefghij", 9, 2, -8);
866 test("abcde", 1, 1, "abcdefghij", 10, 0, 1);
867 test("abcde", 1, 1, "abcdefghij", 10, 1, 1);
868 test("abcde", 1, 1, "abcdefghij", 11, 0, 0);
869 test("abcde", 1, 1, "abcdefghijklmnopqrst", 0, 0, 1);
870 test("abcde", 1, 1, "abcdefghijklmnopqrst", 0, 1, 1);
871 test("abcde", 1, 1, "abcdefghijklmnopqrst", 0, 10, 1);
872 test("abcde", 1, 1, "abcdefghijklmnopqrst", 0, 19, 1);
873 test("abcde", 1, 1, "abcdefghijklmnopqrst", 0, 20, 1);
874 test("abcde", 1, 1, "abcdefghijklmnopqrst", 0, 21, 1);
875 test("abcde", 1, 1, "abcdefghijklmnopqrst", 1, 0, 1);
876 test("abcde", 1, 1, "abcdefghijklmnopqrst", 1, 1, 0);
877 test("abcde", 1, 1, "abcdefghijklmnopqrst", 1, 9, -8);
878 test("abcde", 1, 1, "abcdefghijklmnopqrst", 1, 18, -17);
879}
880
881void test8()
882{
883 test("abcde", 1, 1, "abcdefghijklmnopqrst", 1, 19, -18);
884 test("abcde", 1, 1, "abcdefghijklmnopqrst", 1, 20, -18);
885 test("abcde", 1, 1, "abcdefghijklmnopqrst", 10, 0, 1);
886 test("abcde", 1, 1, "abcdefghijklmnopqrst", 10, 1, -9);
887 test("abcde", 1, 1, "abcdefghijklmnopqrst", 10, 5, -9);
888 test("abcde", 1, 1, "abcdefghijklmnopqrst", 10, 9, -9);
889 test("abcde", 1, 1, "abcdefghijklmnopqrst", 10, 10, -9);
890 test("abcde", 1, 1, "abcdefghijklmnopqrst", 10, 11, -9);
891 test("abcde", 1, 1, "abcdefghijklmnopqrst", 19, 0, 1);
892 test("abcde", 1, 1, "abcdefghijklmnopqrst", 19, 1, -18);
893 test("abcde", 1, 1, "abcdefghijklmnopqrst", 19, 2, -18);
894 test("abcde", 1, 1, "abcdefghijklmnopqrst", 20, 0, 1);
895 test("abcde", 1, 1, "abcdefghijklmnopqrst", 20, 1, 1);
896 test("abcde", 1, 1, "abcdefghijklmnopqrst", 21, 0, 0);
897 test("abcde", 1, 2, "", 0, 0, 2);
898 test("abcde", 1, 2, "", 0, 1, 2);
899 test("abcde", 1, 2, "", 1, 0, 0);
900 test("abcde", 1, 2, "abcde", 0, 0, 2);
901 test("abcde", 1, 2, "abcde", 0, 1, 1);
902 test("abcde", 1, 2, "abcde", 0, 2, 1);
903 test("abcde", 1, 2, "abcde", 0, 4, 1);
904 test("abcde", 1, 2, "abcde", 0, 5, 1);
905 test("abcde", 1, 2, "abcde", 0, 6, 1);
906 test("abcde", 1, 2, "abcde", 1, 0, 2);
907 test("abcde", 1, 2, "abcde", 1, 1, 1);
908 test("abcde", 1, 2, "abcde", 1, 2, 0);
909 test("abcde", 1, 2, "abcde", 1, 3, -1);
910 test("abcde", 1, 2, "abcde", 1, 4, -2);
911 test("abcde", 1, 2, "abcde", 1, 5, -2);
912 test("abcde", 1, 2, "abcde", 2, 0, 2);
913 test("abcde", 1, 2, "abcde", 2, 1, -1);
914 test("abcde", 1, 2, "abcde", 2, 2, -1);
915 test("abcde", 1, 2, "abcde", 2, 3, -1);
916 test("abcde", 1, 2, "abcde", 2, 4, -1);
917 test("abcde", 1, 2, "abcde", 4, 0, 2);
918 test("abcde", 1, 2, "abcde", 4, 1, -3);
919 test("abcde", 1, 2, "abcde", 4, 2, -3);
920 test("abcde", 1, 2, "abcde", 5, 0, 2);
921 test("abcde", 1, 2, "abcde", 5, 1, 2);
922 test("abcde", 1, 2, "abcde", 6, 0, 0);
923 test("abcde", 1, 2, "abcdefghij", 0, 0, 2);
924 test("abcde", 1, 2, "abcdefghij", 0, 1, 1);
925 test("abcde", 1, 2, "abcdefghij", 0, 5, 1);
926 test("abcde", 1, 2, "abcdefghij", 0, 9, 1);
927 test("abcde", 1, 2, "abcdefghij", 0, 10, 1);
928 test("abcde", 1, 2, "abcdefghij", 0, 11, 1);
929 test("abcde", 1, 2, "abcdefghij", 1, 0, 2);
930 test("abcde", 1, 2, "abcdefghij", 1, 1, 1);
931 test("abcde", 1, 2, "abcdefghij", 1, 4, -2);
932 test("abcde", 1, 2, "abcdefghij", 1, 8, -6);
933 test("abcde", 1, 2, "abcdefghij", 1, 9, -7);
934 test("abcde", 1, 2, "abcdefghij", 1, 10, -7);
935 test("abcde", 1, 2, "abcdefghij", 5, 0, 2);
936 test("abcde", 1, 2, "abcdefghij", 5, 1, -4);
937 test("abcde", 1, 2, "abcdefghij", 5, 2, -4);
938 test("abcde", 1, 2, "abcdefghij", 5, 4, -4);
939 test("abcde", 1, 2, "abcdefghij", 5, 5, -4);
940 test("abcde", 1, 2, "abcdefghij", 5, 6, -4);
941 test("abcde", 1, 2, "abcdefghij", 9, 0, 2);
942 test("abcde", 1, 2, "abcdefghij", 9, 1, -8);
943 test("abcde", 1, 2, "abcdefghij", 9, 2, -8);
944 test("abcde", 1, 2, "abcdefghij", 10, 0, 2);
945 test("abcde", 1, 2, "abcdefghij", 10, 1, 2);
946 test("abcde", 1, 2, "abcdefghij", 11, 0, 0);
947 test("abcde", 1, 2, "abcdefghijklmnopqrst", 0, 0, 2);
948 test("abcde", 1, 2, "abcdefghijklmnopqrst", 0, 1, 1);
949 test("abcde", 1, 2, "abcdefghijklmnopqrst", 0, 10, 1);
950 test("abcde", 1, 2, "abcdefghijklmnopqrst", 0, 19, 1);
951 test("abcde", 1, 2, "abcdefghijklmnopqrst", 0, 20, 1);
952 test("abcde", 1, 2, "abcdefghijklmnopqrst", 0, 21, 1);
953 test("abcde", 1, 2, "abcdefghijklmnopqrst", 1, 0, 2);
954 test("abcde", 1, 2, "abcdefghijklmnopqrst", 1, 1, 1);
955 test("abcde", 1, 2, "abcdefghijklmnopqrst", 1, 9, -7);
956 test("abcde", 1, 2, "abcdefghijklmnopqrst", 1, 18, -16);
957 test("abcde", 1, 2, "abcdefghijklmnopqrst", 1, 19, -17);
958 test("abcde", 1, 2, "abcdefghijklmnopqrst", 1, 20, -17);
959 test("abcde", 1, 2, "abcdefghijklmnopqrst", 10, 0, 2);
960 test("abcde", 1, 2, "abcdefghijklmnopqrst", 10, 1, -9);
961 test("abcde", 1, 2, "abcdefghijklmnopqrst", 10, 5, -9);
962 test("abcde", 1, 2, "abcdefghijklmnopqrst", 10, 9, -9);
963 test("abcde", 1, 2, "abcdefghijklmnopqrst", 10, 10, -9);
964 test("abcde", 1, 2, "abcdefghijklmnopqrst", 10, 11, -9);
965 test("abcde", 1, 2, "abcdefghijklmnopqrst", 19, 0, 2);
966 test("abcde", 1, 2, "abcdefghijklmnopqrst", 19, 1, -18);
967 test("abcde", 1, 2, "abcdefghijklmnopqrst", 19, 2, -18);
968 test("abcde", 1, 2, "abcdefghijklmnopqrst", 20, 0, 2);
969 test("abcde", 1, 2, "abcdefghijklmnopqrst", 20, 1, 2);
970 test("abcde", 1, 2, "abcdefghijklmnopqrst", 21, 0, 0);
971 test("abcde", 1, 3, "", 0, 0, 3);
972 test("abcde", 1, 3, "", 0, 1, 3);
973 test("abcde", 1, 3, "", 1, 0, 0);
974 test("abcde", 1, 3, "abcde", 0, 0, 3);
975 test("abcde", 1, 3, "abcde", 0, 1, 1);
976 test("abcde", 1, 3, "abcde", 0, 2, 1);
977 test("abcde", 1, 3, "abcde", 0, 4, 1);
978 test("abcde", 1, 3, "abcde", 0, 5, 1);
979 test("abcde", 1, 3, "abcde", 0, 6, 1);
980 test("abcde", 1, 3, "abcde", 1, 0, 3);
981 test("abcde", 1, 3, "abcde", 1, 1, 2);
982 test("abcde", 1, 3, "abcde", 1, 2, 1);
983}
984
985void test9()
986{
987 test("abcde", 1, 3, "abcde", 1, 3, 0);
988 test("abcde", 1, 3, "abcde", 1, 4, -1);
989 test("abcde", 1, 3, "abcde", 1, 5, -1);
990 test("abcde", 1, 3, "abcde", 2, 0, 3);
991 test("abcde", 1, 3, "abcde", 2, 1, -1);
992 test("abcde", 1, 3, "abcde", 2, 2, -1);
993 test("abcde", 1, 3, "abcde", 2, 3, -1);
994 test("abcde", 1, 3, "abcde", 2, 4, -1);
995 test("abcde", 1, 3, "abcde", 4, 0, 3);
996 test("abcde", 1, 3, "abcde", 4, 1, -3);
997 test("abcde", 1, 3, "abcde", 4, 2, -3);
998 test("abcde", 1, 3, "abcde", 5, 0, 3);
999 test("abcde", 1, 3, "abcde", 5, 1, 3);
1000 test("abcde", 1, 3, "abcde", 6, 0, 0);
1001 test("abcde", 1, 3, "abcdefghij", 0, 0, 3);
1002 test("abcde", 1, 3, "abcdefghij", 0, 1, 1);
1003 test("abcde", 1, 3, "abcdefghij", 0, 5, 1);
1004 test("abcde", 1, 3, "abcdefghij", 0, 9, 1);
1005 test("abcde", 1, 3, "abcdefghij", 0, 10, 1);
1006 test("abcde", 1, 3, "abcdefghij", 0, 11, 1);
1007 test("abcde", 1, 3, "abcdefghij", 1, 0, 3);
1008 test("abcde", 1, 3, "abcdefghij", 1, 1, 2);
1009 test("abcde", 1, 3, "abcdefghij", 1, 4, -1);
1010 test("abcde", 1, 3, "abcdefghij", 1, 8, -5);
1011 test("abcde", 1, 3, "abcdefghij", 1, 9, -6);
1012 test("abcde", 1, 3, "abcdefghij", 1, 10, -6);
1013 test("abcde", 1, 3, "abcdefghij", 5, 0, 3);
1014 test("abcde", 1, 3, "abcdefghij", 5, 1, -4);
1015 test("abcde", 1, 3, "abcdefghij", 5, 2, -4);
1016 test("abcde", 1, 3, "abcdefghij", 5, 4, -4);
1017 test("abcde", 1, 3, "abcdefghij", 5, 5, -4);
1018 test("abcde", 1, 3, "abcdefghij", 5, 6, -4);
1019 test("abcde", 1, 3, "abcdefghij", 9, 0, 3);
1020 test("abcde", 1, 3, "abcdefghij", 9, 1, -8);
1021 test("abcde", 1, 3, "abcdefghij", 9, 2, -8);
1022 test("abcde", 1, 3, "abcdefghij", 10, 0, 3);
1023 test("abcde", 1, 3, "abcdefghij", 10, 1, 3);
1024 test("abcde", 1, 3, "abcdefghij", 11, 0, 0);
1025 test("abcde", 1, 3, "abcdefghijklmnopqrst", 0, 0, 3);
1026 test("abcde", 1, 3, "abcdefghijklmnopqrst", 0, 1, 1);
1027 test("abcde", 1, 3, "abcdefghijklmnopqrst", 0, 10, 1);
1028 test("abcde", 1, 3, "abcdefghijklmnopqrst", 0, 19, 1);
1029 test("abcde", 1, 3, "abcdefghijklmnopqrst", 0, 20, 1);
1030 test("abcde", 1, 3, "abcdefghijklmnopqrst", 0, 21, 1);
1031 test("abcde", 1, 3, "abcdefghijklmnopqrst", 1, 0, 3);
1032 test("abcde", 1, 3, "abcdefghijklmnopqrst", 1, 1, 2);
1033 test("abcde", 1, 3, "abcdefghijklmnopqrst", 1, 9, -6);
1034 test("abcde", 1, 3, "abcdefghijklmnopqrst", 1, 18, -15);
1035 test("abcde", 1, 3, "abcdefghijklmnopqrst", 1, 19, -16);
1036 test("abcde", 1, 3, "abcdefghijklmnopqrst", 1, 20, -16);
1037 test("abcde", 1, 3, "abcdefghijklmnopqrst", 10, 0, 3);
1038 test("abcde", 1, 3, "abcdefghijklmnopqrst", 10, 1, -9);
1039 test("abcde", 1, 3, "abcdefghijklmnopqrst", 10, 5, -9);
1040 test("abcde", 1, 3, "abcdefghijklmnopqrst", 10, 9, -9);
1041 test("abcde", 1, 3, "abcdefghijklmnopqrst", 10, 10, -9);
1042 test("abcde", 1, 3, "abcdefghijklmnopqrst", 10, 11, -9);
1043 test("abcde", 1, 3, "abcdefghijklmnopqrst", 19, 0, 3);
1044 test("abcde", 1, 3, "abcdefghijklmnopqrst", 19, 1, -18);
1045 test("abcde", 1, 3, "abcdefghijklmnopqrst", 19, 2, -18);
1046 test("abcde", 1, 3, "abcdefghijklmnopqrst", 20, 0, 3);
1047 test("abcde", 1, 3, "abcdefghijklmnopqrst", 20, 1, 3);
1048 test("abcde", 1, 3, "abcdefghijklmnopqrst", 21, 0, 0);
1049 test("abcde", 1, 4, "", 0, 0, 4);
1050 test("abcde", 1, 4, "", 0, 1, 4);
1051 test("abcde", 1, 4, "", 1, 0, 0);
1052 test("abcde", 1, 4, "abcde", 0, 0, 4);
1053 test("abcde", 1, 4, "abcde", 0, 1, 1);
1054 test("abcde", 1, 4, "abcde", 0, 2, 1);
1055 test("abcde", 1, 4, "abcde", 0, 4, 1);
1056 test("abcde", 1, 4, "abcde", 0, 5, 1);
1057 test("abcde", 1, 4, "abcde", 0, 6, 1);
1058 test("abcde", 1, 4, "abcde", 1, 0, 4);
1059 test("abcde", 1, 4, "abcde", 1, 1, 3);
1060 test("abcde", 1, 4, "abcde", 1, 2, 2);
1061 test("abcde", 1, 4, "abcde", 1, 3, 1);
1062 test("abcde", 1, 4, "abcde", 1, 4, 0);
1063 test("abcde", 1, 4, "abcde", 1, 5, 0);
1064 test("abcde", 1, 4, "abcde", 2, 0, 4);
1065 test("abcde", 1, 4, "abcde", 2, 1, -1);
1066 test("abcde", 1, 4, "abcde", 2, 2, -1);
1067 test("abcde", 1, 4, "abcde", 2, 3, -1);
1068 test("abcde", 1, 4, "abcde", 2, 4, -1);
1069 test("abcde", 1, 4, "abcde", 4, 0, 4);
1070 test("abcde", 1, 4, "abcde", 4, 1, -3);
1071 test("abcde", 1, 4, "abcde", 4, 2, -3);
1072 test("abcde", 1, 4, "abcde", 5, 0, 4);
1073 test("abcde", 1, 4, "abcde", 5, 1, 4);
1074 test("abcde", 1, 4, "abcde", 6, 0, 0);
1075 test("abcde", 1, 4, "abcdefghij", 0, 0, 4);
1076 test("abcde", 1, 4, "abcdefghij", 0, 1, 1);
1077 test("abcde", 1, 4, "abcdefghij", 0, 5, 1);
1078 test("abcde", 1, 4, "abcdefghij", 0, 9, 1);
1079 test("abcde", 1, 4, "abcdefghij", 0, 10, 1);
1080 test("abcde", 1, 4, "abcdefghij", 0, 11, 1);
1081 test("abcde", 1, 4, "abcdefghij", 1, 0, 4);
1082 test("abcde", 1, 4, "abcdefghij", 1, 1, 3);
1083 test("abcde", 1, 4, "abcdefghij", 1, 4, 0);
1084 test("abcde", 1, 4, "abcdefghij", 1, 8, -4);
1085 test("abcde", 1, 4, "abcdefghij", 1, 9, -5);
1086 test("abcde", 1, 4, "abcdefghij", 1, 10, -5);
1087}
1088
1089void test10()
1090{
1091 test("abcde", 1, 4, "abcdefghij", 5, 0, 4);
1092 test("abcde", 1, 4, "abcdefghij", 5, 1, -4);
1093 test("abcde", 1, 4, "abcdefghij", 5, 2, -4);
1094 test("abcde", 1, 4, "abcdefghij", 5, 4, -4);
1095 test("abcde", 1, 4, "abcdefghij", 5, 5, -4);
1096 test("abcde", 1, 4, "abcdefghij", 5, 6, -4);
1097 test("abcde", 1, 4, "abcdefghij", 9, 0, 4);
1098 test("abcde", 1, 4, "abcdefghij", 9, 1, -8);
1099 test("abcde", 1, 4, "abcdefghij", 9, 2, -8);
1100 test("abcde", 1, 4, "abcdefghij", 10, 0, 4);
1101 test("abcde", 1, 4, "abcdefghij", 10, 1, 4);
1102 test("abcde", 1, 4, "abcdefghij", 11, 0, 0);
1103 test("abcde", 1, 4, "abcdefghijklmnopqrst", 0, 0, 4);
1104 test("abcde", 1, 4, "abcdefghijklmnopqrst", 0, 1, 1);
1105 test("abcde", 1, 4, "abcdefghijklmnopqrst", 0, 10, 1);
1106 test("abcde", 1, 4, "abcdefghijklmnopqrst", 0, 19, 1);
1107 test("abcde", 1, 4, "abcdefghijklmnopqrst", 0, 20, 1);
1108 test("abcde", 1, 4, "abcdefghijklmnopqrst", 0, 21, 1);
1109 test("abcde", 1, 4, "abcdefghijklmnopqrst", 1, 0, 4);
1110 test("abcde", 1, 4, "abcdefghijklmnopqrst", 1, 1, 3);
1111 test("abcde", 1, 4, "abcdefghijklmnopqrst", 1, 9, -5);
1112 test("abcde", 1, 4, "abcdefghijklmnopqrst", 1, 18, -14);
1113 test("abcde", 1, 4, "abcdefghijklmnopqrst", 1, 19, -15);
1114 test("abcde", 1, 4, "abcdefghijklmnopqrst", 1, 20, -15);
1115 test("abcde", 1, 4, "abcdefghijklmnopqrst", 10, 0, 4);
1116 test("abcde", 1, 4, "abcdefghijklmnopqrst", 10, 1, -9);
1117 test("abcde", 1, 4, "abcdefghijklmnopqrst", 10, 5, -9);
1118 test("abcde", 1, 4, "abcdefghijklmnopqrst", 10, 9, -9);
1119 test("abcde", 1, 4, "abcdefghijklmnopqrst", 10, 10, -9);
1120 test("abcde", 1, 4, "abcdefghijklmnopqrst", 10, 11, -9);
1121 test("abcde", 1, 4, "abcdefghijklmnopqrst", 19, 0, 4);
1122 test("abcde", 1, 4, "abcdefghijklmnopqrst", 19, 1, -18);
1123 test("abcde", 1, 4, "abcdefghijklmnopqrst", 19, 2, -18);
1124 test("abcde", 1, 4, "abcdefghijklmnopqrst", 20, 0, 4);
1125 test("abcde", 1, 4, "abcdefghijklmnopqrst", 20, 1, 4);
1126 test("abcde", 1, 4, "abcdefghijklmnopqrst", 21, 0, 0);
1127 test("abcde", 1, 5, "", 0, 0, 4);
1128 test("abcde", 1, 5, "", 0, 1, 4);
1129 test("abcde", 1, 5, "", 1, 0, 0);
1130 test("abcde", 1, 5, "abcde", 0, 0, 4);
1131 test("abcde", 1, 5, "abcde", 0, 1, 1);
1132 test("abcde", 1, 5, "abcde", 0, 2, 1);
1133 test("abcde", 1, 5, "abcde", 0, 4, 1);
1134 test("abcde", 1, 5, "abcde", 0, 5, 1);
1135 test("abcde", 1, 5, "abcde", 0, 6, 1);
1136 test("abcde", 1, 5, "abcde", 1, 0, 4);
1137 test("abcde", 1, 5, "abcde", 1, 1, 3);
1138 test("abcde", 1, 5, "abcde", 1, 2, 2);
1139 test("abcde", 1, 5, "abcde", 1, 3, 1);
1140 test("abcde", 1, 5, "abcde", 1, 4, 0);
1141 test("abcde", 1, 5, "abcde", 1, 5, 0);
1142 test("abcde", 1, 5, "abcde", 2, 0, 4);
1143 test("abcde", 1, 5, "abcde", 2, 1, -1);
1144 test("abcde", 1, 5, "abcde", 2, 2, -1);
1145 test("abcde", 1, 5, "abcde", 2, 3, -1);
1146 test("abcde", 1, 5, "abcde", 2, 4, -1);
1147 test("abcde", 1, 5, "abcde", 4, 0, 4);
1148 test("abcde", 1, 5, "abcde", 4, 1, -3);
1149 test("abcde", 1, 5, "abcde", 4, 2, -3);
1150 test("abcde", 1, 5, "abcde", 5, 0, 4);
1151 test("abcde", 1, 5, "abcde", 5, 1, 4);
1152 test("abcde", 1, 5, "abcde", 6, 0, 0);
1153 test("abcde", 1, 5, "abcdefghij", 0, 0, 4);
1154 test("abcde", 1, 5, "abcdefghij", 0, 1, 1);
1155 test("abcde", 1, 5, "abcdefghij", 0, 5, 1);
1156 test("abcde", 1, 5, "abcdefghij", 0, 9, 1);
1157 test("abcde", 1, 5, "abcdefghij", 0, 10, 1);
1158 test("abcde", 1, 5, "abcdefghij", 0, 11, 1);
1159 test("abcde", 1, 5, "abcdefghij", 1, 0, 4);
1160 test("abcde", 1, 5, "abcdefghij", 1, 1, 3);
1161 test("abcde", 1, 5, "abcdefghij", 1, 4, 0);
1162 test("abcde", 1, 5, "abcdefghij", 1, 8, -4);
1163 test("abcde", 1, 5, "abcdefghij", 1, 9, -5);
1164 test("abcde", 1, 5, "abcdefghij", 1, 10, -5);
1165 test("abcde", 1, 5, "abcdefghij", 5, 0, 4);
1166 test("abcde", 1, 5, "abcdefghij", 5, 1, -4);
1167 test("abcde", 1, 5, "abcdefghij", 5, 2, -4);
1168 test("abcde", 1, 5, "abcdefghij", 5, 4, -4);
1169 test("abcde", 1, 5, "abcdefghij", 5, 5, -4);
1170 test("abcde", 1, 5, "abcdefghij", 5, 6, -4);
1171 test("abcde", 1, 5, "abcdefghij", 9, 0, 4);
1172 test("abcde", 1, 5, "abcdefghij", 9, 1, -8);
1173 test("abcde", 1, 5, "abcdefghij", 9, 2, -8);
1174 test("abcde", 1, 5, "abcdefghij", 10, 0, 4);
1175 test("abcde", 1, 5, "abcdefghij", 10, 1, 4);
1176 test("abcde", 1, 5, "abcdefghij", 11, 0, 0);
1177 test("abcde", 1, 5, "abcdefghijklmnopqrst", 0, 0, 4);
1178 test("abcde", 1, 5, "abcdefghijklmnopqrst", 0, 1, 1);
1179 test("abcde", 1, 5, "abcdefghijklmnopqrst", 0, 10, 1);
1180 test("abcde", 1, 5, "abcdefghijklmnopqrst", 0, 19, 1);
1181 test("abcde", 1, 5, "abcdefghijklmnopqrst", 0, 20, 1);
1182 test("abcde", 1, 5, "abcdefghijklmnopqrst", 0, 21, 1);
1183 test("abcde", 1, 5, "abcdefghijklmnopqrst", 1, 0, 4);
1184 test("abcde", 1, 5, "abcdefghijklmnopqrst", 1, 1, 3);
1185 test("abcde", 1, 5, "abcdefghijklmnopqrst", 1, 9, -5);
1186 test("abcde", 1, 5, "abcdefghijklmnopqrst", 1, 18, -14);
1187 test("abcde", 1, 5, "abcdefghijklmnopqrst", 1, 19, -15);
1188 test("abcde", 1, 5, "abcdefghijklmnopqrst", 1, 20, -15);
1189 test("abcde", 1, 5, "abcdefghijklmnopqrst", 10, 0, 4);
1190 test("abcde", 1, 5, "abcdefghijklmnopqrst", 10, 1, -9);
1191}
1192
1193void test11()
1194{
1195 test("abcde", 1, 5, "abcdefghijklmnopqrst", 10, 5, -9);
1196 test("abcde", 1, 5, "abcdefghijklmnopqrst", 10, 9, -9);
1197 test("abcde", 1, 5, "abcdefghijklmnopqrst", 10, 10, -9);
1198 test("abcde", 1, 5, "abcdefghijklmnopqrst", 10, 11, -9);
1199 test("abcde", 1, 5, "abcdefghijklmnopqrst", 19, 0, 4);
1200 test("abcde", 1, 5, "abcdefghijklmnopqrst", 19, 1, -18);
1201 test("abcde", 1, 5, "abcdefghijklmnopqrst", 19, 2, -18);
1202 test("abcde", 1, 5, "abcdefghijklmnopqrst", 20, 0, 4);
1203 test("abcde", 1, 5, "abcdefghijklmnopqrst", 20, 1, 4);
1204 test("abcde", 1, 5, "abcdefghijklmnopqrst", 21, 0, 0);
1205 test("abcde", 2, 0, "", 0, 0, 0);
1206 test("abcde", 2, 0, "", 0, 1, 0);
1207 test("abcde", 2, 0, "", 1, 0, 0);
1208 test("abcde", 2, 0, "abcde", 0, 0, 0);
1209 test("abcde", 2, 0, "abcde", 0, 1, -1);
1210 test("abcde", 2, 0, "abcde", 0, 2, -2);
1211 test("abcde", 2, 0, "abcde", 0, 4, -4);
1212 test("abcde", 2, 0, "abcde", 0, 5, -5);
1213 test("abcde", 2, 0, "abcde", 0, 6, -5);
1214 test("abcde", 2, 0, "abcde", 1, 0, 0);
1215 test("abcde", 2, 0, "abcde", 1, 1, -1);
1216 test("abcde", 2, 0, "abcde", 1, 2, -2);
1217 test("abcde", 2, 0, "abcde", 1, 3, -3);
1218 test("abcde", 2, 0, "abcde", 1, 4, -4);
1219 test("abcde", 2, 0, "abcde", 1, 5, -4);
1220 test("abcde", 2, 0, "abcde", 2, 0, 0);
1221 test("abcde", 2, 0, "abcde", 2, 1, -1);
1222 test("abcde", 2, 0, "abcde", 2, 2, -2);
1223 test("abcde", 2, 0, "abcde", 2, 3, -3);
1224 test("abcde", 2, 0, "abcde", 2, 4, -3);
1225 test("abcde", 2, 0, "abcde", 4, 0, 0);
1226 test("abcde", 2, 0, "abcde", 4, 1, -1);
1227 test("abcde", 2, 0, "abcde", 4, 2, -1);
1228 test("abcde", 2, 0, "abcde", 5, 0, 0);
1229 test("abcde", 2, 0, "abcde", 5, 1, 0);
1230 test("abcde", 2, 0, "abcde", 6, 0, 0);
1231 test("abcde", 2, 0, "abcdefghij", 0, 0, 0);
1232 test("abcde", 2, 0, "abcdefghij", 0, 1, -1);
1233 test("abcde", 2, 0, "abcdefghij", 0, 5, -5);
1234 test("abcde", 2, 0, "abcdefghij", 0, 9, -9);
1235 test("abcde", 2, 0, "abcdefghij", 0, 10, -10);
1236 test("abcde", 2, 0, "abcdefghij", 0, 11, -10);
1237 test("abcde", 2, 0, "abcdefghij", 1, 0, 0);
1238 test("abcde", 2, 0, "abcdefghij", 1, 1, -1);
1239 test("abcde", 2, 0, "abcdefghij", 1, 4, -4);
1240 test("abcde", 2, 0, "abcdefghij", 1, 8, -8);
1241 test("abcde", 2, 0, "abcdefghij", 1, 9, -9);
1242 test("abcde", 2, 0, "abcdefghij", 1, 10, -9);
1243 test("abcde", 2, 0, "abcdefghij", 5, 0, 0);
1244 test("abcde", 2, 0, "abcdefghij", 5, 1, -1);
1245 test("abcde", 2, 0, "abcdefghij", 5, 2, -2);
1246 test("abcde", 2, 0, "abcdefghij", 5, 4, -4);
1247 test("abcde", 2, 0, "abcdefghij", 5, 5, -5);
1248 test("abcde", 2, 0, "abcdefghij", 5, 6, -5);
1249 test("abcde", 2, 0, "abcdefghij", 9, 0, 0);
1250 test("abcde", 2, 0, "abcdefghij", 9, 1, -1);
1251 test("abcde", 2, 0, "abcdefghij", 9, 2, -1);
1252 test("abcde", 2, 0, "abcdefghij", 10, 0, 0);
1253 test("abcde", 2, 0, "abcdefghij", 10, 1, 0);
1254 test("abcde", 2, 0, "abcdefghij", 11, 0, 0);
1255 test("abcde", 2, 0, "abcdefghijklmnopqrst", 0, 0, 0);
1256 test("abcde", 2, 0, "abcdefghijklmnopqrst", 0, 1, -1);
1257 test("abcde", 2, 0, "abcdefghijklmnopqrst", 0, 10, -10);
1258 test("abcde", 2, 0, "abcdefghijklmnopqrst", 0, 19, -19);
1259 test("abcde", 2, 0, "abcdefghijklmnopqrst", 0, 20, -20);
1260 test("abcde", 2, 0, "abcdefghijklmnopqrst", 0, 21, -20);
1261 test("abcde", 2, 0, "abcdefghijklmnopqrst", 1, 0, 0);
1262 test("abcde", 2, 0, "abcdefghijklmnopqrst", 1, 1, -1);
1263 test("abcde", 2, 0, "abcdefghijklmnopqrst", 1, 9, -9);
1264 test("abcde", 2, 0, "abcdefghijklmnopqrst", 1, 18, -18);
1265 test("abcde", 2, 0, "abcdefghijklmnopqrst", 1, 19, -19);
1266 test("abcde", 2, 0, "abcdefghijklmnopqrst", 1, 20, -19);
1267 test("abcde", 2, 0, "abcdefghijklmnopqrst", 10, 0, 0);
1268 test("abcde", 2, 0, "abcdefghijklmnopqrst", 10, 1, -1);
1269 test("abcde", 2, 0, "abcdefghijklmnopqrst", 10, 5, -5);
1270 test("abcde", 2, 0, "abcdefghijklmnopqrst", 10, 9, -9);
1271 test("abcde", 2, 0, "abcdefghijklmnopqrst", 10, 10, -10);
1272 test("abcde", 2, 0, "abcdefghijklmnopqrst", 10, 11, -10);
1273 test("abcde", 2, 0, "abcdefghijklmnopqrst", 19, 0, 0);
1274 test("abcde", 2, 0, "abcdefghijklmnopqrst", 19, 1, -1);
1275 test("abcde", 2, 0, "abcdefghijklmnopqrst", 19, 2, -1);
1276 test("abcde", 2, 0, "abcdefghijklmnopqrst", 20, 0, 0);
1277 test("abcde", 2, 0, "abcdefghijklmnopqrst", 20, 1, 0);
1278 test("abcde", 2, 0, "abcdefghijklmnopqrst", 21, 0, 0);
1279 test("abcde", 2, 1, "", 0, 0, 1);
1280 test("abcde", 2, 1, "", 0, 1, 1);
1281 test("abcde", 2, 1, "", 1, 0, 0);
1282 test("abcde", 2, 1, "abcde", 0, 0, 1);
1283 test("abcde", 2, 1, "abcde", 0, 1, 2);
1284 test("abcde", 2, 1, "abcde", 0, 2, 2);
1285 test("abcde", 2, 1, "abcde", 0, 4, 2);
1286 test("abcde", 2, 1, "abcde", 0, 5, 2);
1287 test("abcde", 2, 1, "abcde", 0, 6, 2);
1288 test("abcde", 2, 1, "abcde", 1, 0, 1);
1289 test("abcde", 2, 1, "abcde", 1, 1, 1);
1290 test("abcde", 2, 1, "abcde", 1, 2, 1);
1291 test("abcde", 2, 1, "abcde", 1, 3, 1);
1292 test("abcde", 2, 1, "abcde", 1, 4, 1);
1293 test("abcde", 2, 1, "abcde", 1, 5, 1);
1294 test("abcde", 2, 1, "abcde", 2, 0, 1);
1295}
1296
1297void test12()
1298{
1299 test("abcde", 2, 1, "abcde", 2, 1, 0);
1300 test("abcde", 2, 1, "abcde", 2, 2, -1);
1301 test("abcde", 2, 1, "abcde", 2, 3, -2);
1302 test("abcde", 2, 1, "abcde", 2, 4, -2);
1303 test("abcde", 2, 1, "abcde", 4, 0, 1);
1304 test("abcde", 2, 1, "abcde", 4, 1, -2);
1305 test("abcde", 2, 1, "abcde", 4, 2, -2);
1306 test("abcde", 2, 1, "abcde", 5, 0, 1);
1307 test("abcde", 2, 1, "abcde", 5, 1, 1);
1308 test("abcde", 2, 1, "abcde", 6, 0, 0);
1309 test("abcde", 2, 1, "abcdefghij", 0, 0, 1);
1310 test("abcde", 2, 1, "abcdefghij", 0, 1, 2);
1311 test("abcde", 2, 1, "abcdefghij", 0, 5, 2);
1312 test("abcde", 2, 1, "abcdefghij", 0, 9, 2);
1313 test("abcde", 2, 1, "abcdefghij", 0, 10, 2);
1314 test("abcde", 2, 1, "abcdefghij", 0, 11, 2);
1315 test("abcde", 2, 1, "abcdefghij", 1, 0, 1);
1316 test("abcde", 2, 1, "abcdefghij", 1, 1, 1);
1317 test("abcde", 2, 1, "abcdefghij", 1, 4, 1);
1318 test("abcde", 2, 1, "abcdefghij", 1, 8, 1);
1319 test("abcde", 2, 1, "abcdefghij", 1, 9, 1);
1320 test("abcde", 2, 1, "abcdefghij", 1, 10, 1);
1321 test("abcde", 2, 1, "abcdefghij", 5, 0, 1);
1322 test("abcde", 2, 1, "abcdefghij", 5, 1, -3);
1323 test("abcde", 2, 1, "abcdefghij", 5, 2, -3);
1324 test("abcde", 2, 1, "abcdefghij", 5, 4, -3);
1325 test("abcde", 2, 1, "abcdefghij", 5, 5, -3);
1326 test("abcde", 2, 1, "abcdefghij", 5, 6, -3);
1327 test("abcde", 2, 1, "abcdefghij", 9, 0, 1);
1328 test("abcde", 2, 1, "abcdefghij", 9, 1, -7);
1329 test("abcde", 2, 1, "abcdefghij", 9, 2, -7);
1330 test("abcde", 2, 1, "abcdefghij", 10, 0, 1);
1331 test("abcde", 2, 1, "abcdefghij", 10, 1, 1);
1332 test("abcde", 2, 1, "abcdefghij", 11, 0, 0);
1333 test("abcde", 2, 1, "abcdefghijklmnopqrst", 0, 0, 1);
1334 test("abcde", 2, 1, "abcdefghijklmnopqrst", 0, 1, 2);
1335 test("abcde", 2, 1, "abcdefghijklmnopqrst", 0, 10, 2);
1336 test("abcde", 2, 1, "abcdefghijklmnopqrst", 0, 19, 2);
1337 test("abcde", 2, 1, "abcdefghijklmnopqrst", 0, 20, 2);
1338 test("abcde", 2, 1, "abcdefghijklmnopqrst", 0, 21, 2);
1339 test("abcde", 2, 1, "abcdefghijklmnopqrst", 1, 0, 1);
1340 test("abcde", 2, 1, "abcdefghijklmnopqrst", 1, 1, 1);
1341 test("abcde", 2, 1, "abcdefghijklmnopqrst", 1, 9, 1);
1342 test("abcde", 2, 1, "abcdefghijklmnopqrst", 1, 18, 1);
1343 test("abcde", 2, 1, "abcdefghijklmnopqrst", 1, 19, 1);
1344 test("abcde", 2, 1, "abcdefghijklmnopqrst", 1, 20, 1);
1345 test("abcde", 2, 1, "abcdefghijklmnopqrst", 10, 0, 1);
1346 test("abcde", 2, 1, "abcdefghijklmnopqrst", 10, 1, -8);
1347 test("abcde", 2, 1, "abcdefghijklmnopqrst", 10, 5, -8);
1348 test("abcde", 2, 1, "abcdefghijklmnopqrst", 10, 9, -8);
1349 test("abcde", 2, 1, "abcdefghijklmnopqrst", 10, 10, -8);
1350 test("abcde", 2, 1, "abcdefghijklmnopqrst", 10, 11, -8);
1351 test("abcde", 2, 1, "abcdefghijklmnopqrst", 19, 0, 1);
1352 test("abcde", 2, 1, "abcdefghijklmnopqrst", 19, 1, -17);
1353 test("abcde", 2, 1, "abcdefghijklmnopqrst", 19, 2, -17);
1354 test("abcde", 2, 1, "abcdefghijklmnopqrst", 20, 0, 1);
1355 test("abcde", 2, 1, "abcdefghijklmnopqrst", 20, 1, 1);
1356 test("abcde", 2, 1, "abcdefghijklmnopqrst", 21, 0, 0);
1357 test("abcde", 2, 2, "", 0, 0, 2);
1358 test("abcde", 2, 2, "", 0, 1, 2);
1359 test("abcde", 2, 2, "", 1, 0, 0);
1360 test("abcde", 2, 2, "abcde", 0, 0, 2);
1361 test("abcde", 2, 2, "abcde", 0, 1, 2);
1362 test("abcde", 2, 2, "abcde", 0, 2, 2);
1363 test("abcde", 2, 2, "abcde", 0, 4, 2);
1364 test("abcde", 2, 2, "abcde", 0, 5, 2);
1365 test("abcde", 2, 2, "abcde", 0, 6, 2);
1366 test("abcde", 2, 2, "abcde", 1, 0, 2);
1367 test("abcde", 2, 2, "abcde", 1, 1, 1);
1368 test("abcde", 2, 2, "abcde", 1, 2, 1);
1369 test("abcde", 2, 2, "abcde", 1, 3, 1);
1370 test("abcde", 2, 2, "abcde", 1, 4, 1);
1371 test("abcde", 2, 2, "abcde", 1, 5, 1);
1372 test("abcde", 2, 2, "abcde", 2, 0, 2);
1373 test("abcde", 2, 2, "abcde", 2, 1, 1);
1374 test("abcde", 2, 2, "abcde", 2, 2, 0);
1375 test("abcde", 2, 2, "abcde", 2, 3, -1);
1376 test("abcde", 2, 2, "abcde", 2, 4, -1);
1377 test("abcde", 2, 2, "abcde", 4, 0, 2);
1378 test("abcde", 2, 2, "abcde", 4, 1, -2);
1379 test("abcde", 2, 2, "abcde", 4, 2, -2);
1380 test("abcde", 2, 2, "abcde", 5, 0, 2);
1381 test("abcde", 2, 2, "abcde", 5, 1, 2);
1382 test("abcde", 2, 2, "abcde", 6, 0, 0);
1383 test("abcde", 2, 2, "abcdefghij", 0, 0, 2);
1384 test("abcde", 2, 2, "abcdefghij", 0, 1, 2);
1385 test("abcde", 2, 2, "abcdefghij", 0, 5, 2);
1386 test("abcde", 2, 2, "abcdefghij", 0, 9, 2);
1387 test("abcde", 2, 2, "abcdefghij", 0, 10, 2);
1388 test("abcde", 2, 2, "abcdefghij", 0, 11, 2);
1389 test("abcde", 2, 2, "abcdefghij", 1, 0, 2);
1390 test("abcde", 2, 2, "abcdefghij", 1, 1, 1);
1391 test("abcde", 2, 2, "abcdefghij", 1, 4, 1);
1392 test("abcde", 2, 2, "abcdefghij", 1, 8, 1);
1393 test("abcde", 2, 2, "abcdefghij", 1, 9, 1);
1394 test("abcde", 2, 2, "abcdefghij", 1, 10, 1);
1395 test("abcde", 2, 2, "abcdefghij", 5, 0, 2);
1396 test("abcde", 2, 2, "abcdefghij", 5, 1, -3);
1397 test("abcde", 2, 2, "abcdefghij", 5, 2, -3);
1398 test("abcde", 2, 2, "abcdefghij", 5, 4, -3);
1399}
1400
1401void test13()
1402{
1403 test("abcde", 2, 2, "abcdefghij", 5, 5, -3);
1404 test("abcde", 2, 2, "abcdefghij", 5, 6, -3);
1405 test("abcde", 2, 2, "abcdefghij", 9, 0, 2);
1406 test("abcde", 2, 2, "abcdefghij", 9, 1, -7);
1407 test("abcde", 2, 2, "abcdefghij", 9, 2, -7);
1408 test("abcde", 2, 2, "abcdefghij", 10, 0, 2);
1409 test("abcde", 2, 2, "abcdefghij", 10, 1, 2);
1410 test("abcde", 2, 2, "abcdefghij", 11, 0, 0);
1411 test("abcde", 2, 2, "abcdefghijklmnopqrst", 0, 0, 2);
1412 test("abcde", 2, 2, "abcdefghijklmnopqrst", 0, 1, 2);
1413 test("abcde", 2, 2, "abcdefghijklmnopqrst", 0, 10, 2);
1414 test("abcde", 2, 2, "abcdefghijklmnopqrst", 0, 19, 2);
1415 test("abcde", 2, 2, "abcdefghijklmnopqrst", 0, 20, 2);
1416 test("abcde", 2, 2, "abcdefghijklmnopqrst", 0, 21, 2);
1417 test("abcde", 2, 2, "abcdefghijklmnopqrst", 1, 0, 2);
1418 test("abcde", 2, 2, "abcdefghijklmnopqrst", 1, 1, 1);
1419 test("abcde", 2, 2, "abcdefghijklmnopqrst", 1, 9, 1);
1420 test("abcde", 2, 2, "abcdefghijklmnopqrst", 1, 18, 1);
1421 test("abcde", 2, 2, "abcdefghijklmnopqrst", 1, 19, 1);
1422 test("abcde", 2, 2, "abcdefghijklmnopqrst", 1, 20, 1);
1423 test("abcde", 2, 2, "abcdefghijklmnopqrst", 10, 0, 2);
1424 test("abcde", 2, 2, "abcdefghijklmnopqrst", 10, 1, -8);
1425 test("abcde", 2, 2, "abcdefghijklmnopqrst", 10, 5, -8);
1426 test("abcde", 2, 2, "abcdefghijklmnopqrst", 10, 9, -8);
1427 test("abcde", 2, 2, "abcdefghijklmnopqrst", 10, 10, -8);
1428 test("abcde", 2, 2, "abcdefghijklmnopqrst", 10, 11, -8);
1429 test("abcde", 2, 2, "abcdefghijklmnopqrst", 19, 0, 2);
1430 test("abcde", 2, 2, "abcdefghijklmnopqrst", 19, 1, -17);
1431 test("abcde", 2, 2, "abcdefghijklmnopqrst", 19, 2, -17);
1432 test("abcde", 2, 2, "abcdefghijklmnopqrst", 20, 0, 2);
1433 test("abcde", 2, 2, "abcdefghijklmnopqrst", 20, 1, 2);
1434 test("abcde", 2, 2, "abcdefghijklmnopqrst", 21, 0, 0);
1435 test("abcde", 2, 3, "", 0, 0, 3);
1436 test("abcde", 2, 3, "", 0, 1, 3);
1437 test("abcde", 2, 3, "", 1, 0, 0);
1438 test("abcde", 2, 3, "abcde", 0, 0, 3);
1439 test("abcde", 2, 3, "abcde", 0, 1, 2);
1440 test("abcde", 2, 3, "abcde", 0, 2, 2);
1441 test("abcde", 2, 3, "abcde", 0, 4, 2);
1442 test("abcde", 2, 3, "abcde", 0, 5, 2);
1443 test("abcde", 2, 3, "abcde", 0, 6, 2);
1444 test("abcde", 2, 3, "abcde", 1, 0, 3);
1445 test("abcde", 2, 3, "abcde", 1, 1, 1);
1446 test("abcde", 2, 3, "abcde", 1, 2, 1);
1447 test("abcde", 2, 3, "abcde", 1, 3, 1);
1448 test("abcde", 2, 3, "abcde", 1, 4, 1);
1449 test("abcde", 2, 3, "abcde", 1, 5, 1);
1450 test("abcde", 2, 3, "abcde", 2, 0, 3);
1451 test("abcde", 2, 3, "abcde", 2, 1, 2);
1452 test("abcde", 2, 3, "abcde", 2, 2, 1);
1453 test("abcde", 2, 3, "abcde", 2, 3, 0);
1454 test("abcde", 2, 3, "abcde", 2, 4, 0);
1455 test("abcde", 2, 3, "abcde", 4, 0, 3);
1456 test("abcde", 2, 3, "abcde", 4, 1, -2);
1457 test("abcde", 2, 3, "abcde", 4, 2, -2);
1458 test("abcde", 2, 3, "abcde", 5, 0, 3);
1459 test("abcde", 2, 3, "abcde", 5, 1, 3);
1460 test("abcde", 2, 3, "abcde", 6, 0, 0);
1461 test("abcde", 2, 3, "abcdefghij", 0, 0, 3);
1462 test("abcde", 2, 3, "abcdefghij", 0, 1, 2);
1463 test("abcde", 2, 3, "abcdefghij", 0, 5, 2);
1464 test("abcde", 2, 3, "abcdefghij", 0, 9, 2);
1465 test("abcde", 2, 3, "abcdefghij", 0, 10, 2);
1466 test("abcde", 2, 3, "abcdefghij", 0, 11, 2);
1467 test("abcde", 2, 3, "abcdefghij", 1, 0, 3);
1468 test("abcde", 2, 3, "abcdefghij", 1, 1, 1);
1469 test("abcde", 2, 3, "abcdefghij", 1, 4, 1);
1470 test("abcde", 2, 3, "abcdefghij", 1, 8, 1);
1471 test("abcde", 2, 3, "abcdefghij", 1, 9, 1);
1472 test("abcde", 2, 3, "abcdefghij", 1, 10, 1);
1473 test("abcde", 2, 3, "abcdefghij", 5, 0, 3);
1474 test("abcde", 2, 3, "abcdefghij", 5, 1, -3);
1475 test("abcde", 2, 3, "abcdefghij", 5, 2, -3);
1476 test("abcde", 2, 3, "abcdefghij", 5, 4, -3);
1477 test("abcde", 2, 3, "abcdefghij", 5, 5, -3);
1478 test("abcde", 2, 3, "abcdefghij", 5, 6, -3);
1479 test("abcde", 2, 3, "abcdefghij", 9, 0, 3);
1480 test("abcde", 2, 3, "abcdefghij", 9, 1, -7);
1481 test("abcde", 2, 3, "abcdefghij", 9, 2, -7);
1482 test("abcde", 2, 3, "abcdefghij", 10, 0, 3);
1483 test("abcde", 2, 3, "abcdefghij", 10, 1, 3);
1484 test("abcde", 2, 3, "abcdefghij", 11, 0, 0);
1485 test("abcde", 2, 3, "abcdefghijklmnopqrst", 0, 0, 3);
1486 test("abcde", 2, 3, "abcdefghijklmnopqrst", 0, 1, 2);
1487 test("abcde", 2, 3, "abcdefghijklmnopqrst", 0, 10, 2);
1488 test("abcde", 2, 3, "abcdefghijklmnopqrst", 0, 19, 2);
1489 test("abcde", 2, 3, "abcdefghijklmnopqrst", 0, 20, 2);
1490 test("abcde", 2, 3, "abcdefghijklmnopqrst", 0, 21, 2);
1491 test("abcde", 2, 3, "abcdefghijklmnopqrst", 1, 0, 3);
1492 test("abcde", 2, 3, "abcdefghijklmnopqrst", 1, 1, 1);
1493 test("abcde", 2, 3, "abcdefghijklmnopqrst", 1, 9, 1);
1494 test("abcde", 2, 3, "abcdefghijklmnopqrst", 1, 18, 1);
1495 test("abcde", 2, 3, "abcdefghijklmnopqrst", 1, 19, 1);
1496 test("abcde", 2, 3, "abcdefghijklmnopqrst", 1, 20, 1);
1497 test("abcde", 2, 3, "abcdefghijklmnopqrst", 10, 0, 3);
1498 test("abcde", 2, 3, "abcdefghijklmnopqrst", 10, 1, -8);
1499 test("abcde", 2, 3, "abcdefghijklmnopqrst", 10, 5, -8);
1500 test("abcde", 2, 3, "abcdefghijklmnopqrst", 10, 9, -8);
1501 test("abcde", 2, 3, "abcdefghijklmnopqrst", 10, 10, -8);
1502 test("abcde", 2, 3, "abcdefghijklmnopqrst", 10, 11, -8);
1503}
1504
1505void test14()
1506{
1507 test("abcde", 2, 3, "abcdefghijklmnopqrst", 19, 0, 3);
1508 test("abcde", 2, 3, "abcdefghijklmnopqrst", 19, 1, -17);
1509 test("abcde", 2, 3, "abcdefghijklmnopqrst", 19, 2, -17);
1510 test("abcde", 2, 3, "abcdefghijklmnopqrst", 20, 0, 3);
1511 test("abcde", 2, 3, "abcdefghijklmnopqrst", 20, 1, 3);
1512 test("abcde", 2, 3, "abcdefghijklmnopqrst", 21, 0, 0);
1513 test("abcde", 2, 4, "", 0, 0, 3);
1514 test("abcde", 2, 4, "", 0, 1, 3);
1515 test("abcde", 2, 4, "", 1, 0, 0);
1516 test("abcde", 2, 4, "abcde", 0, 0, 3);
1517 test("abcde", 2, 4, "abcde", 0, 1, 2);
1518 test("abcde", 2, 4, "abcde", 0, 2, 2);
1519 test("abcde", 2, 4, "abcde", 0, 4, 2);
1520 test("abcde", 2, 4, "abcde", 0, 5, 2);
1521 test("abcde", 2, 4, "abcde", 0, 6, 2);
1522 test("abcde", 2, 4, "abcde", 1, 0, 3);
1523 test("abcde", 2, 4, "abcde", 1, 1, 1);
1524 test("abcde", 2, 4, "abcde", 1, 2, 1);
1525 test("abcde", 2, 4, "abcde", 1, 3, 1);
1526 test("abcde", 2, 4, "abcde", 1, 4, 1);
1527 test("abcde", 2, 4, "abcde", 1, 5, 1);
1528 test("abcde", 2, 4, "abcde", 2, 0, 3);
1529 test("abcde", 2, 4, "abcde", 2, 1, 2);
1530 test("abcde", 2, 4, "abcde", 2, 2, 1);
1531 test("abcde", 2, 4, "abcde", 2, 3, 0);
1532 test("abcde", 2, 4, "abcde", 2, 4, 0);
1533 test("abcde", 2, 4, "abcde", 4, 0, 3);
1534 test("abcde", 2, 4, "abcde", 4, 1, -2);
1535 test("abcde", 2, 4, "abcde", 4, 2, -2);
1536 test("abcde", 2, 4, "abcde", 5, 0, 3);
1537 test("abcde", 2, 4, "abcde", 5, 1, 3);
1538 test("abcde", 2, 4, "abcde", 6, 0, 0);
1539 test("abcde", 2, 4, "abcdefghij", 0, 0, 3);
1540 test("abcde", 2, 4, "abcdefghij", 0, 1, 2);
1541 test("abcde", 2, 4, "abcdefghij", 0, 5, 2);
1542 test("abcde", 2, 4, "abcdefghij", 0, 9, 2);
1543 test("abcde", 2, 4, "abcdefghij", 0, 10, 2);
1544 test("abcde", 2, 4, "abcdefghij", 0, 11, 2);
1545 test("abcde", 2, 4, "abcdefghij", 1, 0, 3);
1546 test("abcde", 2, 4, "abcdefghij", 1, 1, 1);
1547 test("abcde", 2, 4, "abcdefghij", 1, 4, 1);
1548 test("abcde", 2, 4, "abcdefghij", 1, 8, 1);
1549 test("abcde", 2, 4, "abcdefghij", 1, 9, 1);
1550 test("abcde", 2, 4, "abcdefghij", 1, 10, 1);
1551 test("abcde", 2, 4, "abcdefghij", 5, 0, 3);
1552 test("abcde", 2, 4, "abcdefghij", 5, 1, -3);
1553 test("abcde", 2, 4, "abcdefghij", 5, 2, -3);
1554 test("abcde", 2, 4, "abcdefghij", 5, 4, -3);
1555 test("abcde", 2, 4, "abcdefghij", 5, 5, -3);
1556 test("abcde", 2, 4, "abcdefghij", 5, 6, -3);
1557 test("abcde", 2, 4, "abcdefghij", 9, 0, 3);
1558 test("abcde", 2, 4, "abcdefghij", 9, 1, -7);
1559 test("abcde", 2, 4, "abcdefghij", 9, 2, -7);
1560 test("abcde", 2, 4, "abcdefghij", 10, 0, 3);
1561 test("abcde", 2, 4, "abcdefghij", 10, 1, 3);
1562 test("abcde", 2, 4, "abcdefghij", 11, 0, 0);
1563 test("abcde", 2, 4, "abcdefghijklmnopqrst", 0, 0, 3);
1564 test("abcde", 2, 4, "abcdefghijklmnopqrst", 0, 1, 2);
1565 test("abcde", 2, 4, "abcdefghijklmnopqrst", 0, 10, 2);
1566 test("abcde", 2, 4, "abcdefghijklmnopqrst", 0, 19, 2);
1567 test("abcde", 2, 4, "abcdefghijklmnopqrst", 0, 20, 2);
1568 test("abcde", 2, 4, "abcdefghijklmnopqrst", 0, 21, 2);
1569 test("abcde", 2, 4, "abcdefghijklmnopqrst", 1, 0, 3);
1570 test("abcde", 2, 4, "abcdefghijklmnopqrst", 1, 1, 1);
1571 test("abcde", 2, 4, "abcdefghijklmnopqrst", 1, 9, 1);
1572 test("abcde", 2, 4, "abcdefghijklmnopqrst", 1, 18, 1);
1573 test("abcde", 2, 4, "abcdefghijklmnopqrst", 1, 19, 1);
1574 test("abcde", 2, 4, "abcdefghijklmnopqrst", 1, 20, 1);
1575 test("abcde", 2, 4, "abcdefghijklmnopqrst", 10, 0, 3);
1576 test("abcde", 2, 4, "abcdefghijklmnopqrst", 10, 1, -8);
1577 test("abcde", 2, 4, "abcdefghijklmnopqrst", 10, 5, -8);
1578 test("abcde", 2, 4, "abcdefghijklmnopqrst", 10, 9, -8);
1579 test("abcde", 2, 4, "abcdefghijklmnopqrst", 10, 10, -8);
1580 test("abcde", 2, 4, "abcdefghijklmnopqrst", 10, 11, -8);
1581 test("abcde", 2, 4, "abcdefghijklmnopqrst", 19, 0, 3);
1582 test("abcde", 2, 4, "abcdefghijklmnopqrst", 19, 1, -17);
1583 test("abcde", 2, 4, "abcdefghijklmnopqrst", 19, 2, -17);
1584 test("abcde", 2, 4, "abcdefghijklmnopqrst", 20, 0, 3);
1585 test("abcde", 2, 4, "abcdefghijklmnopqrst", 20, 1, 3);
1586 test("abcde", 2, 4, "abcdefghijklmnopqrst", 21, 0, 0);
1587 test("abcde", 4, 0, "", 0, 0, 0);
1588 test("abcde", 4, 0, "", 0, 1, 0);
1589 test("abcde", 4, 0, "", 1, 0, 0);
1590 test("abcde", 4, 0, "abcde", 0, 0, 0);
1591 test("abcde", 4, 0, "abcde", 0, 1, -1);
1592 test("abcde", 4, 0, "abcde", 0, 2, -2);
1593 test("abcde", 4, 0, "abcde", 0, 4, -4);
1594 test("abcde", 4, 0, "abcde", 0, 5, -5);
1595 test("abcde", 4, 0, "abcde", 0, 6, -5);
1596 test("abcde", 4, 0, "abcde", 1, 0, 0);
1597 test("abcde", 4, 0, "abcde", 1, 1, -1);
1598 test("abcde", 4, 0, "abcde", 1, 2, -2);
1599 test("abcde", 4, 0, "abcde", 1, 3, -3);
1600 test("abcde", 4, 0, "abcde", 1, 4, -4);
1601 test("abcde", 4, 0, "abcde", 1, 5, -4);
1602 test("abcde", 4, 0, "abcde", 2, 0, 0);
1603 test("abcde", 4, 0, "abcde", 2, 1, -1);
1604 test("abcde", 4, 0, "abcde", 2, 2, -2);
1605 test("abcde", 4, 0, "abcde", 2, 3, -3);
1606 test("abcde", 4, 0, "abcde", 2, 4, -3);
1607}
1608
1609void test15()
1610{
1611 test("abcde", 4, 0, "abcde", 4, 0, 0);
1612 test("abcde", 4, 0, "abcde", 4, 1, -1);
1613 test("abcde", 4, 0, "abcde", 4, 2, -1);
1614 test("abcde", 4, 0, "abcde", 5, 0, 0);
1615 test("abcde", 4, 0, "abcde", 5, 1, 0);
1616 test("abcde", 4, 0, "abcde", 6, 0, 0);
1617 test("abcde", 4, 0, "abcdefghij", 0, 0, 0);
1618 test("abcde", 4, 0, "abcdefghij", 0, 1, -1);
1619 test("abcde", 4, 0, "abcdefghij", 0, 5, -5);
1620 test("abcde", 4, 0, "abcdefghij", 0, 9, -9);
1621 test("abcde", 4, 0, "abcdefghij", 0, 10, -10);
1622 test("abcde", 4, 0, "abcdefghij", 0, 11, -10);
1623 test("abcde", 4, 0, "abcdefghij", 1, 0, 0);
1624 test("abcde", 4, 0, "abcdefghij", 1, 1, -1);
1625 test("abcde", 4, 0, "abcdefghij", 1, 4, -4);
1626 test("abcde", 4, 0, "abcdefghij", 1, 8, -8);
1627 test("abcde", 4, 0, "abcdefghij", 1, 9, -9);
1628 test("abcde", 4, 0, "abcdefghij", 1, 10, -9);
1629 test("abcde", 4, 0, "abcdefghij", 5, 0, 0);
1630 test("abcde", 4, 0, "abcdefghij", 5, 1, -1);
1631 test("abcde", 4, 0, "abcdefghij", 5, 2, -2);
1632 test("abcde", 4, 0, "abcdefghij", 5, 4, -4);
1633 test("abcde", 4, 0, "abcdefghij", 5, 5, -5);
1634 test("abcde", 4, 0, "abcdefghij", 5, 6, -5);
1635 test("abcde", 4, 0, "abcdefghij", 9, 0, 0);
1636 test("abcde", 4, 0, "abcdefghij", 9, 1, -1);
1637 test("abcde", 4, 0, "abcdefghij", 9, 2, -1);
1638 test("abcde", 4, 0, "abcdefghij", 10, 0, 0);
1639 test("abcde", 4, 0, "abcdefghij", 10, 1, 0);
1640 test("abcde", 4, 0, "abcdefghij", 11, 0, 0);
1641 test("abcde", 4, 0, "abcdefghijklmnopqrst", 0, 0, 0);
1642 test("abcde", 4, 0, "abcdefghijklmnopqrst", 0, 1, -1);
1643 test("abcde", 4, 0, "abcdefghijklmnopqrst", 0, 10, -10);
1644 test("abcde", 4, 0, "abcdefghijklmnopqrst", 0, 19, -19);
1645 test("abcde", 4, 0, "abcdefghijklmnopqrst", 0, 20, -20);
1646 test("abcde", 4, 0, "abcdefghijklmnopqrst", 0, 21, -20);
1647 test("abcde", 4, 0, "abcdefghijklmnopqrst", 1, 0, 0);
1648 test("abcde", 4, 0, "abcdefghijklmnopqrst", 1, 1, -1);
1649 test("abcde", 4, 0, "abcdefghijklmnopqrst", 1, 9, -9);
1650 test("abcde", 4, 0, "abcdefghijklmnopqrst", 1, 18, -18);
1651 test("abcde", 4, 0, "abcdefghijklmnopqrst", 1, 19, -19);
1652 test("abcde", 4, 0, "abcdefghijklmnopqrst", 1, 20, -19);
1653 test("abcde", 4, 0, "abcdefghijklmnopqrst", 10, 0, 0);
1654 test("abcde", 4, 0, "abcdefghijklmnopqrst", 10, 1, -1);
1655 test("abcde", 4, 0, "abcdefghijklmnopqrst", 10, 5, -5);
1656 test("abcde", 4, 0, "abcdefghijklmnopqrst", 10, 9, -9);
1657 test("abcde", 4, 0, "abcdefghijklmnopqrst", 10, 10, -10);
1658 test("abcde", 4, 0, "abcdefghijklmnopqrst", 10, 11, -10);
1659 test("abcde", 4, 0, "abcdefghijklmnopqrst", 19, 0, 0);
1660 test("abcde", 4, 0, "abcdefghijklmnopqrst", 19, 1, -1);
1661 test("abcde", 4, 0, "abcdefghijklmnopqrst", 19, 2, -1);
1662 test("abcde", 4, 0, "abcdefghijklmnopqrst", 20, 0, 0);
1663 test("abcde", 4, 0, "abcdefghijklmnopqrst", 20, 1, 0);
1664 test("abcde", 4, 0, "abcdefghijklmnopqrst", 21, 0, 0);
1665 test("abcde", 4, 1, "", 0, 0, 1);
1666 test("abcde", 4, 1, "", 0, 1, 1);
1667 test("abcde", 4, 1, "", 1, 0, 0);
1668 test("abcde", 4, 1, "abcde", 0, 0, 1);
1669 test("abcde", 4, 1, "abcde", 0, 1, 4);
1670 test("abcde", 4, 1, "abcde", 0, 2, 4);
1671 test("abcde", 4, 1, "abcde", 0, 4, 4);
1672 test("abcde", 4, 1, "abcde", 0, 5, 4);
1673 test("abcde", 4, 1, "abcde", 0, 6, 4);
1674 test("abcde", 4, 1, "abcde", 1, 0, 1);
1675 test("abcde", 4, 1, "abcde", 1, 1, 3);
1676 test("abcde", 4, 1, "abcde", 1, 2, 3);
1677 test("abcde", 4, 1, "abcde", 1, 3, 3);
1678 test("abcde", 4, 1, "abcde", 1, 4, 3);
1679 test("abcde", 4, 1, "abcde", 1, 5, 3);
1680 test("abcde", 4, 1, "abcde", 2, 0, 1);
1681 test("abcde", 4, 1, "abcde", 2, 1, 2);
1682 test("abcde", 4, 1, "abcde", 2, 2, 2);
1683 test("abcde", 4, 1, "abcde", 2, 3, 2);
1684 test("abcde", 4, 1, "abcde", 2, 4, 2);
1685 test("abcde", 4, 1, "abcde", 4, 0, 1);
1686 test("abcde", 4, 1, "abcde", 4, 1, 0);
1687 test("abcde", 4, 1, "abcde", 4, 2, 0);
1688 test("abcde", 4, 1, "abcde", 5, 0, 1);
1689 test("abcde", 4, 1, "abcde", 5, 1, 1);
1690 test("abcde", 4, 1, "abcde", 6, 0, 0);
1691 test("abcde", 4, 1, "abcdefghij", 0, 0, 1);
1692 test("abcde", 4, 1, "abcdefghij", 0, 1, 4);
1693 test("abcde", 4, 1, "abcdefghij", 0, 5, 4);
1694 test("abcde", 4, 1, "abcdefghij", 0, 9, 4);
1695 test("abcde", 4, 1, "abcdefghij", 0, 10, 4);
1696 test("abcde", 4, 1, "abcdefghij", 0, 11, 4);
1697 test("abcde", 4, 1, "abcdefghij", 1, 0, 1);
1698 test("abcde", 4, 1, "abcdefghij", 1, 1, 3);
1699 test("abcde", 4, 1, "abcdefghij", 1, 4, 3);
1700 test("abcde", 4, 1, "abcdefghij", 1, 8, 3);
1701 test("abcde", 4, 1, "abcdefghij", 1, 9, 3);
1702 test("abcde", 4, 1, "abcdefghij", 1, 10, 3);
1703 test("abcde", 4, 1, "abcdefghij", 5, 0, 1);
1704 test("abcde", 4, 1, "abcdefghij", 5, 1, -1);
1705 test("abcde", 4, 1, "abcdefghij", 5, 2, -1);
1706 test("abcde", 4, 1, "abcdefghij", 5, 4, -1);
1707 test("abcde", 4, 1, "abcdefghij", 5, 5, -1);
1708 test("abcde", 4, 1, "abcdefghij", 5, 6, -1);
1709 test("abcde", 4, 1, "abcdefghij", 9, 0, 1);
1710 test("abcde", 4, 1, "abcdefghij", 9, 1, -5);
1711}
1712
1713void test16()
1714{
1715 test("abcde", 4, 1, "abcdefghij", 9, 2, -5);
1716 test("abcde", 4, 1, "abcdefghij", 10, 0, 1);
1717 test("abcde", 4, 1, "abcdefghij", 10, 1, 1);
1718 test("abcde", 4, 1, "abcdefghij", 11, 0, 0);
1719 test("abcde", 4, 1, "abcdefghijklmnopqrst", 0, 0, 1);
1720 test("abcde", 4, 1, "abcdefghijklmnopqrst", 0, 1, 4);
1721 test("abcde", 4, 1, "abcdefghijklmnopqrst", 0, 10, 4);
1722 test("abcde", 4, 1, "abcdefghijklmnopqrst", 0, 19, 4);
1723 test("abcde", 4, 1, "abcdefghijklmnopqrst", 0, 20, 4);
1724 test("abcde", 4, 1, "abcdefghijklmnopqrst", 0, 21, 4);
1725 test("abcde", 4, 1, "abcdefghijklmnopqrst", 1, 0, 1);
1726 test("abcde", 4, 1, "abcdefghijklmnopqrst", 1, 1, 3);
1727 test("abcde", 4, 1, "abcdefghijklmnopqrst", 1, 9, 3);
1728 test("abcde", 4, 1, "abcdefghijklmnopqrst", 1, 18, 3);
1729 test("abcde", 4, 1, "abcdefghijklmnopqrst", 1, 19, 3);
1730 test("abcde", 4, 1, "abcdefghijklmnopqrst", 1, 20, 3);
1731 test("abcde", 4, 1, "abcdefghijklmnopqrst", 10, 0, 1);
1732 test("abcde", 4, 1, "abcdefghijklmnopqrst", 10, 1, -6);
1733 test("abcde", 4, 1, "abcdefghijklmnopqrst", 10, 5, -6);
1734 test("abcde", 4, 1, "abcdefghijklmnopqrst", 10, 9, -6);
1735 test("abcde", 4, 1, "abcdefghijklmnopqrst", 10, 10, -6);
1736 test("abcde", 4, 1, "abcdefghijklmnopqrst", 10, 11, -6);
1737 test("abcde", 4, 1, "abcdefghijklmnopqrst", 19, 0, 1);
1738 test("abcde", 4, 1, "abcdefghijklmnopqrst", 19, 1, -15);
1739 test("abcde", 4, 1, "abcdefghijklmnopqrst", 19, 2, -15);
1740 test("abcde", 4, 1, "abcdefghijklmnopqrst", 20, 0, 1);
1741 test("abcde", 4, 1, "abcdefghijklmnopqrst", 20, 1, 1);
1742 test("abcde", 4, 1, "abcdefghijklmnopqrst", 21, 0, 0);
1743 test("abcde", 4, 2, "", 0, 0, 1);
1744 test("abcde", 4, 2, "", 0, 1, 1);
1745 test("abcde", 4, 2, "", 1, 0, 0);
1746 test("abcde", 4, 2, "abcde", 0, 0, 1);
1747 test("abcde", 4, 2, "abcde", 0, 1, 4);
1748 test("abcde", 4, 2, "abcde", 0, 2, 4);
1749 test("abcde", 4, 2, "abcde", 0, 4, 4);
1750 test("abcde", 4, 2, "abcde", 0, 5, 4);
1751 test("abcde", 4, 2, "abcde", 0, 6, 4);
1752 test("abcde", 4, 2, "abcde", 1, 0, 1);
1753 test("abcde", 4, 2, "abcde", 1, 1, 3);
1754 test("abcde", 4, 2, "abcde", 1, 2, 3);
1755 test("abcde", 4, 2, "abcde", 1, 3, 3);
1756 test("abcde", 4, 2, "abcde", 1, 4, 3);
1757 test("abcde", 4, 2, "abcde", 1, 5, 3);
1758 test("abcde", 4, 2, "abcde", 2, 0, 1);
1759 test("abcde", 4, 2, "abcde", 2, 1, 2);
1760 test("abcde", 4, 2, "abcde", 2, 2, 2);
1761 test("abcde", 4, 2, "abcde", 2, 3, 2);
1762 test("abcde", 4, 2, "abcde", 2, 4, 2);
1763 test("abcde", 4, 2, "abcde", 4, 0, 1);
1764 test("abcde", 4, 2, "abcde", 4, 1, 0);
1765 test("abcde", 4, 2, "abcde", 4, 2, 0);
1766 test("abcde", 4, 2, "abcde", 5, 0, 1);
1767 test("abcde", 4, 2, "abcde", 5, 1, 1);
1768 test("abcde", 4, 2, "abcde", 6, 0, 0);
1769 test("abcde", 4, 2, "abcdefghij", 0, 0, 1);
1770 test("abcde", 4, 2, "abcdefghij", 0, 1, 4);
1771 test("abcde", 4, 2, "abcdefghij", 0, 5, 4);
1772 test("abcde", 4, 2, "abcdefghij", 0, 9, 4);
1773 test("abcde", 4, 2, "abcdefghij", 0, 10, 4);
1774 test("abcde", 4, 2, "abcdefghij", 0, 11, 4);
1775 test("abcde", 4, 2, "abcdefghij", 1, 0, 1);
1776 test("abcde", 4, 2, "abcdefghij", 1, 1, 3);
1777 test("abcde", 4, 2, "abcdefghij", 1, 4, 3);
1778 test("abcde", 4, 2, "abcdefghij", 1, 8, 3);
1779 test("abcde", 4, 2, "abcdefghij", 1, 9, 3);
1780 test("abcde", 4, 2, "abcdefghij", 1, 10, 3);
1781 test("abcde", 4, 2, "abcdefghij", 5, 0, 1);
1782 test("abcde", 4, 2, "abcdefghij", 5, 1, -1);
1783 test("abcde", 4, 2, "abcdefghij", 5, 2, -1);
1784 test("abcde", 4, 2, "abcdefghij", 5, 4, -1);
1785 test("abcde", 4, 2, "abcdefghij", 5, 5, -1);
1786 test("abcde", 4, 2, "abcdefghij", 5, 6, -1);
1787 test("abcde", 4, 2, "abcdefghij", 9, 0, 1);
1788 test("abcde", 4, 2, "abcdefghij", 9, 1, -5);
1789 test("abcde", 4, 2, "abcdefghij", 9, 2, -5);
1790 test("abcde", 4, 2, "abcdefghij", 10, 0, 1);
1791 test("abcde", 4, 2, "abcdefghij", 10, 1, 1);
1792 test("abcde", 4, 2, "abcdefghij", 11, 0, 0);
1793 test("abcde", 4, 2, "abcdefghijklmnopqrst", 0, 0, 1);
1794 test("abcde", 4, 2, "abcdefghijklmnopqrst", 0, 1, 4);
1795 test("abcde", 4, 2, "abcdefghijklmnopqrst", 0, 10, 4);
1796 test("abcde", 4, 2, "abcdefghijklmnopqrst", 0, 19, 4);
1797 test("abcde", 4, 2, "abcdefghijklmnopqrst", 0, 20, 4);
1798 test("abcde", 4, 2, "abcdefghijklmnopqrst", 0, 21, 4);
1799 test("abcde", 4, 2, "abcdefghijklmnopqrst", 1, 0, 1);
1800 test("abcde", 4, 2, "abcdefghijklmnopqrst", 1, 1, 3);
1801 test("abcde", 4, 2, "abcdefghijklmnopqrst", 1, 9, 3);
1802 test("abcde", 4, 2, "abcdefghijklmnopqrst", 1, 18, 3);
1803 test("abcde", 4, 2, "abcdefghijklmnopqrst", 1, 19, 3);
1804 test("abcde", 4, 2, "abcdefghijklmnopqrst", 1, 20, 3);
1805 test("abcde", 4, 2, "abcdefghijklmnopqrst", 10, 0, 1);
1806 test("abcde", 4, 2, "abcdefghijklmnopqrst", 10, 1, -6);
1807 test("abcde", 4, 2, "abcdefghijklmnopqrst", 10, 5, -6);
1808 test("abcde", 4, 2, "abcdefghijklmnopqrst", 10, 9, -6);
1809 test("abcde", 4, 2, "abcdefghijklmnopqrst", 10, 10, -6);
1810 test("abcde", 4, 2, "abcdefghijklmnopqrst", 10, 11, -6);
1811 test("abcde", 4, 2, "abcdefghijklmnopqrst", 19, 0, 1);
1812 test("abcde", 4, 2, "abcdefghijklmnopqrst", 19, 1, -15);
1813 test("abcde", 4, 2, "abcdefghijklmnopqrst", 19, 2, -15);
1814 test("abcde", 4, 2, "abcdefghijklmnopqrst", 20, 0, 1);
1815}
1816
1817void test17()
1818{
1819 test("abcde", 4, 2, "abcdefghijklmnopqrst", 20, 1, 1);
1820 test("abcde", 4, 2, "abcdefghijklmnopqrst", 21, 0, 0);
1821 test("abcde", 5, 0, "", 0, 0, 0);
1822 test("abcde", 5, 0, "", 0, 1, 0);
1823 test("abcde", 5, 0, "", 1, 0, 0);
1824 test("abcde", 5, 0, "abcde", 0, 0, 0);
1825 test("abcde", 5, 0, "abcde", 0, 1, -1);
1826 test("abcde", 5, 0, "abcde", 0, 2, -2);
1827 test("abcde", 5, 0, "abcde", 0, 4, -4);
1828 test("abcde", 5, 0, "abcde", 0, 5, -5);
1829 test("abcde", 5, 0, "abcde", 0, 6, -5);
1830 test("abcde", 5, 0, "abcde", 1, 0, 0);
1831 test("abcde", 5, 0, "abcde", 1, 1, -1);
1832 test("abcde", 5, 0, "abcde", 1, 2, -2);
1833 test("abcde", 5, 0, "abcde", 1, 3, -3);
1834 test("abcde", 5, 0, "abcde", 1, 4, -4);
1835 test("abcde", 5, 0, "abcde", 1, 5, -4);
1836 test("abcde", 5, 0, "abcde", 2, 0, 0);
1837 test("abcde", 5, 0, "abcde", 2, 1, -1);
1838 test("abcde", 5, 0, "abcde", 2, 2, -2);
1839 test("abcde", 5, 0, "abcde", 2, 3, -3);
1840 test("abcde", 5, 0, "abcde", 2, 4, -3);
1841 test("abcde", 5, 0, "abcde", 4, 0, 0);
1842 test("abcde", 5, 0, "abcde", 4, 1, -1);
1843 test("abcde", 5, 0, "abcde", 4, 2, -1);
1844 test("abcde", 5, 0, "abcde", 5, 0, 0);
1845 test("abcde", 5, 0, "abcde", 5, 1, 0);
1846 test("abcde", 5, 0, "abcde", 6, 0, 0);
1847 test("abcde", 5, 0, "abcdefghij", 0, 0, 0);
1848 test("abcde", 5, 0, "abcdefghij", 0, 1, -1);
1849 test("abcde", 5, 0, "abcdefghij", 0, 5, -5);
1850 test("abcde", 5, 0, "abcdefghij", 0, 9, -9);
1851 test("abcde", 5, 0, "abcdefghij", 0, 10, -10);
1852 test("abcde", 5, 0, "abcdefghij", 0, 11, -10);
1853 test("abcde", 5, 0, "abcdefghij", 1, 0, 0);
1854 test("abcde", 5, 0, "abcdefghij", 1, 1, -1);
1855 test("abcde", 5, 0, "abcdefghij", 1, 4, -4);
1856 test("abcde", 5, 0, "abcdefghij", 1, 8, -8);
1857 test("abcde", 5, 0, "abcdefghij", 1, 9, -9);
1858 test("abcde", 5, 0, "abcdefghij", 1, 10, -9);
1859 test("abcde", 5, 0, "abcdefghij", 5, 0, 0);
1860 test("abcde", 5, 0, "abcdefghij", 5, 1, -1);
1861 test("abcde", 5, 0, "abcdefghij", 5, 2, -2);
1862 test("abcde", 5, 0, "abcdefghij", 5, 4, -4);
1863 test("abcde", 5, 0, "abcdefghij", 5, 5, -5);
1864 test("abcde", 5, 0, "abcdefghij", 5, 6, -5);
1865 test("abcde", 5, 0, "abcdefghij", 9, 0, 0);
1866 test("abcde", 5, 0, "abcdefghij", 9, 1, -1);
1867 test("abcde", 5, 0, "abcdefghij", 9, 2, -1);
1868 test("abcde", 5, 0, "abcdefghij", 10, 0, 0);
1869 test("abcde", 5, 0, "abcdefghij", 10, 1, 0);
1870 test("abcde", 5, 0, "abcdefghij", 11, 0, 0);
1871 test("abcde", 5, 0, "abcdefghijklmnopqrst", 0, 0, 0);
1872 test("abcde", 5, 0, "abcdefghijklmnopqrst", 0, 1, -1);
1873 test("abcde", 5, 0, "abcdefghijklmnopqrst", 0, 10, -10);
1874 test("abcde", 5, 0, "abcdefghijklmnopqrst", 0, 19, -19);
1875 test("abcde", 5, 0, "abcdefghijklmnopqrst", 0, 20, -20);
1876 test("abcde", 5, 0, "abcdefghijklmnopqrst", 0, 21, -20);
1877 test("abcde", 5, 0, "abcdefghijklmnopqrst", 1, 0, 0);
1878 test("abcde", 5, 0, "abcdefghijklmnopqrst", 1, 1, -1);
1879 test("abcde", 5, 0, "abcdefghijklmnopqrst", 1, 9, -9);
1880 test("abcde", 5, 0, "abcdefghijklmnopqrst", 1, 18, -18);
1881 test("abcde", 5, 0, "abcdefghijklmnopqrst", 1, 19, -19);
1882 test("abcde", 5, 0, "abcdefghijklmnopqrst", 1, 20, -19);
1883 test("abcde", 5, 0, "abcdefghijklmnopqrst", 10, 0, 0);
1884 test("abcde", 5, 0, "abcdefghijklmnopqrst", 10, 1, -1);
1885 test("abcde", 5, 0, "abcdefghijklmnopqrst", 10, 5, -5);
1886 test("abcde", 5, 0, "abcdefghijklmnopqrst", 10, 9, -9);
1887 test("abcde", 5, 0, "abcdefghijklmnopqrst", 10, 10, -10);
1888 test("abcde", 5, 0, "abcdefghijklmnopqrst", 10, 11, -10);
1889 test("abcde", 5, 0, "abcdefghijklmnopqrst", 19, 0, 0);
1890 test("abcde", 5, 0, "abcdefghijklmnopqrst", 19, 1, -1);
1891 test("abcde", 5, 0, "abcdefghijklmnopqrst", 19, 2, -1);
1892 test("abcde", 5, 0, "abcdefghijklmnopqrst", 20, 0, 0);
1893 test("abcde", 5, 0, "abcdefghijklmnopqrst", 20, 1, 0);
1894 test("abcde", 5, 0, "abcdefghijklmnopqrst", 21, 0, 0);
1895 test("abcde", 5, 1, "", 0, 0, 0);
1896 test("abcde", 5, 1, "", 0, 1, 0);
1897 test("abcde", 5, 1, "", 1, 0, 0);
1898 test("abcde", 5, 1, "abcde", 0, 0, 0);
1899 test("abcde", 5, 1, "abcde", 0, 1, -1);
1900 test("abcde", 5, 1, "abcde", 0, 2, -2);
1901 test("abcde", 5, 1, "abcde", 0, 4, -4);
1902 test("abcde", 5, 1, "abcde", 0, 5, -5);
1903 test("abcde", 5, 1, "abcde", 0, 6, -5);
1904 test("abcde", 5, 1, "abcde", 1, 0, 0);
1905 test("abcde", 5, 1, "abcde", 1, 1, -1);
1906 test("abcde", 5, 1, "abcde", 1, 2, -2);
1907 test("abcde", 5, 1, "abcde", 1, 3, -3);
1908 test("abcde", 5, 1, "abcde", 1, 4, -4);
1909 test("abcde", 5, 1, "abcde", 1, 5, -4);
1910 test("abcde", 5, 1, "abcde", 2, 0, 0);
1911 test("abcde", 5, 1, "abcde", 2, 1, -1);
1912 test("abcde", 5, 1, "abcde", 2, 2, -2);
1913 test("abcde", 5, 1, "abcde", 2, 3, -3);
1914 test("abcde", 5, 1, "abcde", 2, 4, -3);
1915 test("abcde", 5, 1, "abcde", 4, 0, 0);
1916 test("abcde", 5, 1, "abcde", 4, 1, -1);
1917 test("abcde", 5, 1, "abcde", 4, 2, -1);
1918 test("abcde", 5, 1, "abcde", 5, 0, 0);
1919}
1920
1921void test18()
1922{
1923 test("abcde", 5, 1, "abcde", 5, 1, 0);
1924 test("abcde", 5, 1, "abcde", 6, 0, 0);
1925 test("abcde", 5, 1, "abcdefghij", 0, 0, 0);
1926 test("abcde", 5, 1, "abcdefghij", 0, 1, -1);
1927 test("abcde", 5, 1, "abcdefghij", 0, 5, -5);
1928 test("abcde", 5, 1, "abcdefghij", 0, 9, -9);
1929 test("abcde", 5, 1, "abcdefghij", 0, 10, -10);
1930 test("abcde", 5, 1, "abcdefghij", 0, 11, -10);
1931 test("abcde", 5, 1, "abcdefghij", 1, 0, 0);
1932 test("abcde", 5, 1, "abcdefghij", 1, 1, -1);
1933 test("abcde", 5, 1, "abcdefghij", 1, 4, -4);
1934 test("abcde", 5, 1, "abcdefghij", 1, 8, -8);
1935 test("abcde", 5, 1, "abcdefghij", 1, 9, -9);
1936 test("abcde", 5, 1, "abcdefghij", 1, 10, -9);
1937 test("abcde", 5, 1, "abcdefghij", 5, 0, 0);
1938 test("abcde", 5, 1, "abcdefghij", 5, 1, -1);
1939 test("abcde", 5, 1, "abcdefghij", 5, 2, -2);
1940 test("abcde", 5, 1, "abcdefghij", 5, 4, -4);
1941 test("abcde", 5, 1, "abcdefghij", 5, 5, -5);
1942 test("abcde", 5, 1, "abcdefghij", 5, 6, -5);
1943 test("abcde", 5, 1, "abcdefghij", 9, 0, 0);
1944 test("abcde", 5, 1, "abcdefghij", 9, 1, -1);
1945 test("abcde", 5, 1, "abcdefghij", 9, 2, -1);
1946 test("abcde", 5, 1, "abcdefghij", 10, 0, 0);
1947 test("abcde", 5, 1, "abcdefghij", 10, 1, 0);
1948 test("abcde", 5, 1, "abcdefghij", 11, 0, 0);
1949 test("abcde", 5, 1, "abcdefghijklmnopqrst", 0, 0, 0);
1950 test("abcde", 5, 1, "abcdefghijklmnopqrst", 0, 1, -1);
1951 test("abcde", 5, 1, "abcdefghijklmnopqrst", 0, 10, -10);
1952 test("abcde", 5, 1, "abcdefghijklmnopqrst", 0, 19, -19);
1953 test("abcde", 5, 1, "abcdefghijklmnopqrst", 0, 20, -20);
1954 test("abcde", 5, 1, "abcdefghijklmnopqrst", 0, 21, -20);
1955 test("abcde", 5, 1, "abcdefghijklmnopqrst", 1, 0, 0);
1956 test("abcde", 5, 1, "abcdefghijklmnopqrst", 1, 1, -1);
1957 test("abcde", 5, 1, "abcdefghijklmnopqrst", 1, 9, -9);
1958 test("abcde", 5, 1, "abcdefghijklmnopqrst", 1, 18, -18);
1959 test("abcde", 5, 1, "abcdefghijklmnopqrst", 1, 19, -19);
1960 test("abcde", 5, 1, "abcdefghijklmnopqrst", 1, 20, -19);
1961 test("abcde", 5, 1, "abcdefghijklmnopqrst", 10, 0, 0);
1962 test("abcde", 5, 1, "abcdefghijklmnopqrst", 10, 1, -1);
1963 test("abcde", 5, 1, "abcdefghijklmnopqrst", 10, 5, -5);
1964 test("abcde", 5, 1, "abcdefghijklmnopqrst", 10, 9, -9);
1965 test("abcde", 5, 1, "abcdefghijklmnopqrst", 10, 10, -10);
1966 test("abcde", 5, 1, "abcdefghijklmnopqrst", 10, 11, -10);
1967 test("abcde", 5, 1, "abcdefghijklmnopqrst", 19, 0, 0);
1968 test("abcde", 5, 1, "abcdefghijklmnopqrst", 19, 1, -1);
1969 test("abcde", 5, 1, "abcdefghijklmnopqrst", 19, 2, -1);
1970 test("abcde", 5, 1, "abcdefghijklmnopqrst", 20, 0, 0);
1971 test("abcde", 5, 1, "abcdefghijklmnopqrst", 20, 1, 0);
1972 test("abcde", 5, 1, "abcdefghijklmnopqrst", 21, 0, 0);
1973 test("abcde", 6, 0, "", 0, 0, 0);
1974 test("abcde", 6, 0, "", 0, 1, 0);
1975 test("abcde", 6, 0, "", 1, 0, 0);
1976 test("abcde", 6, 0, "abcde", 0, 0, 0);
1977 test("abcde", 6, 0, "abcde", 0, 1, 0);
1978 test("abcde", 6, 0, "abcde", 0, 2, 0);
1979 test("abcde", 6, 0, "abcde", 0, 4, 0);
1980 test("abcde", 6, 0, "abcde", 0, 5, 0);
1981 test("abcde", 6, 0, "abcde", 0, 6, 0);
1982 test("abcde", 6, 0, "abcde", 1, 0, 0);
1983 test("abcde", 6, 0, "abcde", 1, 1, 0);
1984 test("abcde", 6, 0, "abcde", 1, 2, 0);
1985 test("abcde", 6, 0, "abcde", 1, 3, 0);
1986 test("abcde", 6, 0, "abcde", 1, 4, 0);
1987 test("abcde", 6, 0, "abcde", 1, 5, 0);
1988 test("abcde", 6, 0, "abcde", 2, 0, 0);
1989 test("abcde", 6, 0, "abcde", 2, 1, 0);
1990 test("abcde", 6, 0, "abcde", 2, 2, 0);
1991 test("abcde", 6, 0, "abcde", 2, 3, 0);
1992 test("abcde", 6, 0, "abcde", 2, 4, 0);
1993 test("abcde", 6, 0, "abcde", 4, 0, 0);
1994 test("abcde", 6, 0, "abcde", 4, 1, 0);
1995 test("abcde", 6, 0, "abcde", 4, 2, 0);
1996 test("abcde", 6, 0, "abcde", 5, 0, 0);
1997 test("abcde", 6, 0, "abcde", 5, 1, 0);
1998 test("abcde", 6, 0, "abcde", 6, 0, 0);
1999 test("abcde", 6, 0, "abcdefghij", 0, 0, 0);
2000 test("abcde", 6, 0, "abcdefghij", 0, 1, 0);
2001 test("abcde", 6, 0, "abcdefghij", 0, 5, 0);
2002 test("abcde", 6, 0, "abcdefghij", 0, 9, 0);
2003 test("abcde", 6, 0, "abcdefghij", 0, 10, 0);
2004 test("abcde", 6, 0, "abcdefghij", 0, 11, 0);
2005 test("abcde", 6, 0, "abcdefghij", 1, 0, 0);
2006 test("abcde", 6, 0, "abcdefghij", 1, 1, 0);
2007 test("abcde", 6, 0, "abcdefghij", 1, 4, 0);
2008 test("abcde", 6, 0, "abcdefghij", 1, 8, 0);
2009 test("abcde", 6, 0, "abcdefghij", 1, 9, 0);
2010 test("abcde", 6, 0, "abcdefghij", 1, 10, 0);
2011 test("abcde", 6, 0, "abcdefghij", 5, 0, 0);
2012 test("abcde", 6, 0, "abcdefghij", 5, 1, 0);
2013 test("abcde", 6, 0, "abcdefghij", 5, 2, 0);
2014 test("abcde", 6, 0, "abcdefghij", 5, 4, 0);
2015 test("abcde", 6, 0, "abcdefghij", 5, 5, 0);
2016 test("abcde", 6, 0, "abcdefghij", 5, 6, 0);
2017 test("abcde", 6, 0, "abcdefghij", 9, 0, 0);
2018 test("abcde", 6, 0, "abcdefghij", 9, 1, 0);
2019 test("abcde", 6, 0, "abcdefghij", 9, 2, 0);
2020 test("abcde", 6, 0, "abcdefghij", 10, 0, 0);
2021 test("abcde", 6, 0, "abcdefghij", 10, 1, 0);
2022 test("abcde", 6, 0, "abcdefghij", 11, 0, 0);
2023}
2024
2025void test19()
2026{
2027 test("abcde", 6, 0, "abcdefghijklmnopqrst", 0, 0, 0);
2028 test("abcde", 6, 0, "abcdefghijklmnopqrst", 0, 1, 0);
2029 test("abcde", 6, 0, "abcdefghijklmnopqrst", 0, 10, 0);
2030 test("abcde", 6, 0, "abcdefghijklmnopqrst", 0, 19, 0);
2031 test("abcde", 6, 0, "abcdefghijklmnopqrst", 0, 20, 0);
2032 test("abcde", 6, 0, "abcdefghijklmnopqrst", 0, 21, 0);
2033 test("abcde", 6, 0, "abcdefghijklmnopqrst", 1, 0, 0);
2034 test("abcde", 6, 0, "abcdefghijklmnopqrst", 1, 1, 0);
2035 test("abcde", 6, 0, "abcdefghijklmnopqrst", 1, 9, 0);
2036 test("abcde", 6, 0, "abcdefghijklmnopqrst", 1, 18, 0);
2037 test("abcde", 6, 0, "abcdefghijklmnopqrst", 1, 19, 0);
2038 test("abcde", 6, 0, "abcdefghijklmnopqrst", 1, 20, 0);
2039 test("abcde", 6, 0, "abcdefghijklmnopqrst", 10, 0, 0);
2040 test("abcde", 6, 0, "abcdefghijklmnopqrst", 10, 1, 0);
2041 test("abcde", 6, 0, "abcdefghijklmnopqrst", 10, 5, 0);
2042 test("abcde", 6, 0, "abcdefghijklmnopqrst", 10, 9, 0);
2043 test("abcde", 6, 0, "abcdefghijklmnopqrst", 10, 10, 0);
2044 test("abcde", 6, 0, "abcdefghijklmnopqrst", 10, 11, 0);
2045 test("abcde", 6, 0, "abcdefghijklmnopqrst", 19, 0, 0);
2046 test("abcde", 6, 0, "abcdefghijklmnopqrst", 19, 1, 0);
2047 test("abcde", 6, 0, "abcdefghijklmnopqrst", 19, 2, 0);
2048 test("abcde", 6, 0, "abcdefghijklmnopqrst", 20, 0, 0);
2049 test("abcde", 6, 0, "abcdefghijklmnopqrst", 20, 1, 0);
2050 test("abcde", 6, 0, "abcdefghijklmnopqrst", 21, 0, 0);
2051 test("abcdefghij", 0, 0, "", 0, 0, 0);
2052 test("abcdefghij", 0, 0, "", 0, 1, 0);
2053 test("abcdefghij", 0, 0, "", 1, 0, 0);
2054 test("abcdefghij", 0, 0, "abcde", 0, 0, 0);
2055 test("abcdefghij", 0, 0, "abcde", 0, 1, -1);
2056 test("abcdefghij", 0, 0, "abcde", 0, 2, -2);
2057 test("abcdefghij", 0, 0, "abcde", 0, 4, -4);
2058 test("abcdefghij", 0, 0, "abcde", 0, 5, -5);
2059 test("abcdefghij", 0, 0, "abcde", 0, 6, -5);
2060 test("abcdefghij", 0, 0, "abcde", 1, 0, 0);
2061 test("abcdefghij", 0, 0, "abcde", 1, 1, -1);
2062 test("abcdefghij", 0, 0, "abcde", 1, 2, -2);
2063 test("abcdefghij", 0, 0, "abcde", 1, 3, -3);
2064 test("abcdefghij", 0, 0, "abcde", 1, 4, -4);
2065 test("abcdefghij", 0, 0, "abcde", 1, 5, -4);
2066 test("abcdefghij", 0, 0, "abcde", 2, 0, 0);
2067 test("abcdefghij", 0, 0, "abcde", 2, 1, -1);
2068 test("abcdefghij", 0, 0, "abcde", 2, 2, -2);
2069 test("abcdefghij", 0, 0, "abcde", 2, 3, -3);
2070 test("abcdefghij", 0, 0, "abcde", 2, 4, -3);
2071 test("abcdefghij", 0, 0, "abcde", 4, 0, 0);
2072 test("abcdefghij", 0, 0, "abcde", 4, 1, -1);
2073 test("abcdefghij", 0, 0, "abcde", 4, 2, -1);
2074 test("abcdefghij", 0, 0, "abcde", 5, 0, 0);
2075 test("abcdefghij", 0, 0, "abcde", 5, 1, 0);
2076 test("abcdefghij", 0, 0, "abcde", 6, 0, 0);
2077 test("abcdefghij", 0, 0, "abcdefghij", 0, 0, 0);
2078 test("abcdefghij", 0, 0, "abcdefghij", 0, 1, -1);
2079 test("abcdefghij", 0, 0, "abcdefghij", 0, 5, -5);
2080 test("abcdefghij", 0, 0, "abcdefghij", 0, 9, -9);
2081 test("abcdefghij", 0, 0, "abcdefghij", 0, 10, -10);
2082 test("abcdefghij", 0, 0, "abcdefghij", 0, 11, -10);
2083 test("abcdefghij", 0, 0, "abcdefghij", 1, 0, 0);
2084 test("abcdefghij", 0, 0, "abcdefghij", 1, 1, -1);
2085 test("abcdefghij", 0, 0, "abcdefghij", 1, 4, -4);
2086 test("abcdefghij", 0, 0, "abcdefghij", 1, 8, -8);
2087 test("abcdefghij", 0, 0, "abcdefghij", 1, 9, -9);
2088 test("abcdefghij", 0, 0, "abcdefghij", 1, 10, -9);
2089 test("abcdefghij", 0, 0, "abcdefghij", 5, 0, 0);
2090 test("abcdefghij", 0, 0, "abcdefghij", 5, 1, -1);
2091 test("abcdefghij", 0, 0, "abcdefghij", 5, 2, -2);
2092 test("abcdefghij", 0, 0, "abcdefghij", 5, 4, -4);
2093 test("abcdefghij", 0, 0, "abcdefghij", 5, 5, -5);
2094 test("abcdefghij", 0, 0, "abcdefghij", 5, 6, -5);
2095 test("abcdefghij", 0, 0, "abcdefghij", 9, 0, 0);
2096 test("abcdefghij", 0, 0, "abcdefghij", 9, 1, -1);
2097 test("abcdefghij", 0, 0, "abcdefghij", 9, 2, -1);
2098 test("abcdefghij", 0, 0, "abcdefghij", 10, 0, 0);
2099 test("abcdefghij", 0, 0, "abcdefghij", 10, 1, 0);
2100 test("abcdefghij", 0, 0, "abcdefghij", 11, 0, 0);
2101 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 0, 0, 0);
2102 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 0, 1, -1);
2103 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 0, 10, -10);
2104 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 0, 19, -19);
2105 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 0, 20, -20);
2106 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 0, 21, -20);
2107 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 1, 0, 0);
2108 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 1, 1, -1);
2109 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 1, 9, -9);
2110 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 1, 18, -18);
2111 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 1, 19, -19);
2112 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 1, 20, -19);
2113 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 10, 0, 0);
2114 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 10, 1, -1);
2115 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 10, 5, -5);
2116 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 10, 9, -9);
2117 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 10, 10, -10);
2118 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 10, 11, -10);
2119 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 19, 0, 0);
2120 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 19, 1, -1);
2121 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 19, 2, -1);
2122 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 20, 0, 0);
2123 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 20, 1, 0);
2124 test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 21, 0, 0);
2125 test("abcdefghij", 0, 1, "", 0, 0, 1);
2126 test("abcdefghij", 0, 1, "", 0, 1, 1);
2127}
2128
2129void test20()
2130{
2131 test("abcdefghij", 0, 1, "", 1, 0, 0);
2132 test("abcdefghij", 0, 1, "abcde", 0, 0, 1);
2133 test("abcdefghij", 0, 1, "abcde", 0, 1, 0);
2134 test("abcdefghij", 0, 1, "abcde", 0, 2, -1);
2135 test("abcdefghij", 0, 1, "abcde", 0, 4, -3);
2136 test("abcdefghij", 0, 1, "abcde", 0, 5, -4);
2137 test("abcdefghij", 0, 1, "abcde", 0, 6, -4);
2138 test("abcdefghij", 0, 1, "abcde", 1, 0, 1);
2139 test("abcdefghij", 0, 1, "abcde", 1, 1, -1);
2140 test("abcdefghij", 0, 1, "abcde", 1, 2, -1);
2141 test("abcdefghij", 0, 1, "abcde", 1, 3, -1);
2142 test("abcdefghij", 0, 1, "abcde", 1, 4, -1);
2143 test("abcdefghij", 0, 1, "abcde", 1, 5, -1);
2144 test("abcdefghij", 0, 1, "abcde", 2, 0, 1);
2145 test("abcdefghij", 0, 1, "abcde", 2, 1, -2);
2146 test("abcdefghij", 0, 1, "abcde", 2, 2, -2);
2147 test("abcdefghij", 0, 1, "abcde", 2, 3, -2);
2148 test("abcdefghij", 0, 1, "abcde", 2, 4, -2);
2149 test("abcdefghij", 0, 1, "abcde", 4, 0, 1);
2150 test("abcdefghij", 0, 1, "abcde", 4, 1, -4);
2151 test("abcdefghij", 0, 1, "abcde", 4, 2, -4);
2152 test("abcdefghij", 0, 1, "abcde", 5, 0, 1);
2153 test("abcdefghij", 0, 1, "abcde", 5, 1, 1);
2154 test("abcdefghij", 0, 1, "abcde", 6, 0, 0);
2155 test("abcdefghij", 0, 1, "abcdefghij", 0, 0, 1);
2156 test("abcdefghij", 0, 1, "abcdefghij", 0, 1, 0);
2157 test("abcdefghij", 0, 1, "abcdefghij", 0, 5, -4);
2158 test("abcdefghij", 0, 1, "abcdefghij", 0, 9, -8);
2159 test("abcdefghij", 0, 1, "abcdefghij", 0, 10, -9);
2160 test("abcdefghij", 0, 1, "abcdefghij", 0, 11, -9);
2161 test("abcdefghij", 0, 1, "abcdefghij", 1, 0, 1);
2162 test("abcdefghij", 0, 1, "abcdefghij", 1, 1, -1);
2163 test("abcdefghij", 0, 1, "abcdefghij", 1, 4, -1);
2164 test("abcdefghij", 0, 1, "abcdefghij", 1, 8, -1);
2165 test("abcdefghij", 0, 1, "abcdefghij", 1, 9, -1);
2166 test("abcdefghij", 0, 1, "abcdefghij", 1, 10, -1);
2167 test("abcdefghij", 0, 1, "abcdefghij", 5, 0, 1);
2168 test("abcdefghij", 0, 1, "abcdefghij", 5, 1, -5);
2169 test("abcdefghij", 0, 1, "abcdefghij", 5, 2, -5);
2170 test("abcdefghij", 0, 1, "abcdefghij", 5, 4, -5);
2171 test("abcdefghij", 0, 1, "abcdefghij", 5, 5, -5);
2172 test("abcdefghij", 0, 1, "abcdefghij", 5, 6, -5);
2173 test("abcdefghij", 0, 1, "abcdefghij", 9, 0, 1);
2174 test("abcdefghij", 0, 1, "abcdefghij", 9, 1, -9);
2175 test("abcdefghij", 0, 1, "abcdefghij", 9, 2, -9);
2176 test("abcdefghij", 0, 1, "abcdefghij", 10, 0, 1);
2177 test("abcdefghij", 0, 1, "abcdefghij", 10, 1, 1);
2178 test("abcdefghij", 0, 1, "abcdefghij", 11, 0, 0);
2179 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 0, 0, 1);
2180 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 0, 1, 0);
2181 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 0, 10, -9);
2182 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 0, 19, -18);
2183 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 0, 20, -19);
2184 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 0, 21, -19);
2185 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 1, 0, 1);
2186 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 1, 1, -1);
2187 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 1, 9, -1);
2188 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 1, 18, -1);
2189 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 1, 19, -1);
2190 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 1, 20, -1);
2191 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 10, 0, 1);
2192 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 10, 1, -10);
2193 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 10, 5, -10);
2194 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 10, 9, -10);
2195 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 10, 10, -10);
2196 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 10, 11, -10);
2197 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 19, 0, 1);
2198 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 19, 1, -19);
2199 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 19, 2, -19);
2200 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 20, 0, 1);
2201 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 20, 1, 1);
2202 test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 21, 0, 0);
2203 test("abcdefghij", 0, 5, "", 0, 0, 5);
2204 test("abcdefghij", 0, 5, "", 0, 1, 5);
2205 test("abcdefghij", 0, 5, "", 1, 0, 0);
2206 test("abcdefghij", 0, 5, "abcde", 0, 0, 5);
2207 test("abcdefghij", 0, 5, "abcde", 0, 1, 4);
2208 test("abcdefghij", 0, 5, "abcde", 0, 2, 3);
2209 test("abcdefghij", 0, 5, "abcde", 0, 4, 1);
2210 test("abcdefghij", 0, 5, "abcde", 0, 5, 0);
2211 test("abcdefghij", 0, 5, "abcde", 0, 6, 0);
2212 test("abcdefghij", 0, 5, "abcde", 1, 0, 5);
2213 test("abcdefghij", 0, 5, "abcde", 1, 1, -1);
2214 test("abcdefghij", 0, 5, "abcde", 1, 2, -1);
2215 test("abcdefghij", 0, 5, "abcde", 1, 3, -1);
2216 test("abcdefghij", 0, 5, "abcde", 1, 4, -1);
2217 test("abcdefghij", 0, 5, "abcde", 1, 5, -1);
2218 test("abcdefghij", 0, 5, "abcde", 2, 0, 5);
2219 test("abcdefghij", 0, 5, "abcde", 2, 1, -2);
2220 test("abcdefghij", 0, 5, "abcde", 2, 2, -2);
2221 test("abcdefghij", 0, 5, "abcde", 2, 3, -2);
2222 test("abcdefghij", 0, 5, "abcde", 2, 4, -2);
2223 test("abcdefghij", 0, 5, "abcde", 4, 0, 5);
2224 test("abcdefghij", 0, 5, "abcde", 4, 1, -4);
2225 test("abcdefghij", 0, 5, "abcde", 4, 2, -4);
2226 test("abcdefghij", 0, 5, "abcde", 5, 0, 5);
2227 test("abcdefghij", 0, 5, "abcde", 5, 1, 5);
2228 test("abcdefghij", 0, 5, "abcde", 6, 0, 0);
2229 test("abcdefghij", 0, 5, "abcdefghij", 0, 0, 5);
2230 test("abcdefghij", 0, 5, "abcdefghij", 0, 1, 4);
2231}
2232
2233void test21()
2234{
2235 test("abcdefghij", 0, 5, "abcdefghij", 0, 5, 0);
2236 test("abcdefghij", 0, 5, "abcdefghij", 0, 9, -4);
2237 test("abcdefghij", 0, 5, "abcdefghij", 0, 10, -5);
2238 test("abcdefghij", 0, 5, "abcdefghij", 0, 11, -5);
2239 test("abcdefghij", 0, 5, "abcdefghij", 1, 0, 5);
2240 test("abcdefghij", 0, 5, "abcdefghij", 1, 1, -1);
2241 test("abcdefghij", 0, 5, "abcdefghij", 1, 4, -1);
2242 test("abcdefghij", 0, 5, "abcdefghij", 1, 8, -1);
2243 test("abcdefghij", 0, 5, "abcdefghij", 1, 9, -1);
2244 test("abcdefghij", 0, 5, "abcdefghij", 1, 10, -1);
2245 test("abcdefghij", 0, 5, "abcdefghij", 5, 0, 5);
2246 test("abcdefghij", 0, 5, "abcdefghij", 5, 1, -5);
2247 test("abcdefghij", 0, 5, "abcdefghij", 5, 2, -5);
2248 test("abcdefghij", 0, 5, "abcdefghij", 5, 4, -5);
2249 test("abcdefghij", 0, 5, "abcdefghij", 5, 5, -5);
2250 test("abcdefghij", 0, 5, "abcdefghij", 5, 6, -5);
2251 test("abcdefghij", 0, 5, "abcdefghij", 9, 0, 5);
2252 test("abcdefghij", 0, 5, "abcdefghij", 9, 1, -9);
2253 test("abcdefghij", 0, 5, "abcdefghij", 9, 2, -9);
2254 test("abcdefghij", 0, 5, "abcdefghij", 10, 0, 5);
2255 test("abcdefghij", 0, 5, "abcdefghij", 10, 1, 5);
2256 test("abcdefghij", 0, 5, "abcdefghij", 11, 0, 0);
2257 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 0, 0, 5);
2258 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 0, 1, 4);
2259 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 0, 10, -5);
2260 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 0, 19, -14);
2261 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 0, 20, -15);
2262 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 0, 21, -15);
2263 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 1, 0, 5);
2264 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 1, 1, -1);
2265 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 1, 9, -1);
2266 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 1, 18, -1);
2267 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 1, 19, -1);
2268 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 1, 20, -1);
2269 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 10, 0, 5);
2270 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 10, 1, -10);
2271 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 10, 5, -10);
2272 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 10, 9, -10);
2273 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 10, 10, -10);
2274 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 10, 11, -10);
2275 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 19, 0, 5);
2276 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 19, 1, -19);
2277 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 19, 2, -19);
2278 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 20, 0, 5);
2279 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 20, 1, 5);
2280 test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 21, 0, 0);
2281 test("abcdefghij", 0, 9, "", 0, 0, 9);
2282 test("abcdefghij", 0, 9, "", 0, 1, 9);
2283 test("abcdefghij", 0, 9, "", 1, 0, 0);
2284 test("abcdefghij", 0, 9, "abcde", 0, 0, 9);
2285 test("abcdefghij", 0, 9, "abcde", 0, 1, 8);
2286 test("abcdefghij", 0, 9, "abcde", 0, 2, 7);
2287 test("abcdefghij", 0, 9, "abcde", 0, 4, 5);
2288 test("abcdefghij", 0, 9, "abcde", 0, 5, 4);
2289 test("abcdefghij", 0, 9, "abcde", 0, 6, 4);
2290 test("abcdefghij", 0, 9, "abcde", 1, 0, 9);
2291 test("abcdefghij", 0, 9, "abcde", 1, 1, -1);
2292 test("abcdefghij", 0, 9, "abcde", 1, 2, -1);
2293 test("abcdefghij", 0, 9, "abcde", 1, 3, -1);
2294 test("abcdefghij", 0, 9, "abcde", 1, 4, -1);
2295 test("abcdefghij", 0, 9, "abcde", 1, 5, -1);
2296 test("abcdefghij", 0, 9, "abcde", 2, 0, 9);
2297 test("abcdefghij", 0, 9, "abcde", 2, 1, -2);
2298 test("abcdefghij", 0, 9, "abcde", 2, 2, -2);
2299 test("abcdefghij", 0, 9, "abcde", 2, 3, -2);
2300 test("abcdefghij", 0, 9, "abcde", 2, 4, -2);
2301 test("abcdefghij", 0, 9, "abcde", 4, 0, 9);
2302 test("abcdefghij", 0, 9, "abcde", 4, 1, -4);
2303 test("abcdefghij", 0, 9, "abcde", 4, 2, -4);
2304 test("abcdefghij", 0, 9, "abcde", 5, 0, 9);
2305 test("abcdefghij", 0, 9, "abcde", 5, 1, 9);
2306 test("abcdefghij", 0, 9, "abcde", 6, 0, 0);
2307 test("abcdefghij", 0, 9, "abcdefghij", 0, 0, 9);
2308 test("abcdefghij", 0, 9, "abcdefghij", 0, 1, 8);
2309 test("abcdefghij", 0, 9, "abcdefghij", 0, 5, 4);
2310 test("abcdefghij", 0, 9, "abcdefghij", 0, 9, 0);
2311 test("abcdefghij", 0, 9, "abcdefghij", 0, 10, -1);
2312 test("abcdefghij", 0, 9, "abcdefghij", 0, 11, -1);
2313 test("abcdefghij", 0, 9, "abcdefghij", 1, 0, 9);
2314 test("abcdefghij", 0, 9, "abcdefghij", 1, 1, -1);
2315 test("abcdefghij", 0, 9, "abcdefghij", 1, 4, -1);
2316 test("abcdefghij", 0, 9, "abcdefghij", 1, 8, -1);
2317 test("abcdefghij", 0, 9, "abcdefghij", 1, 9, -1);
2318 test("abcdefghij", 0, 9, "abcdefghij", 1, 10, -1);
2319 test("abcdefghij", 0, 9, "abcdefghij", 5, 0, 9);
2320 test("abcdefghij", 0, 9, "abcdefghij", 5, 1, -5);
2321 test("abcdefghij", 0, 9, "abcdefghij", 5, 2, -5);
2322 test("abcdefghij", 0, 9, "abcdefghij", 5, 4, -5);
2323 test("abcdefghij", 0, 9, "abcdefghij", 5, 5, -5);
2324 test("abcdefghij", 0, 9, "abcdefghij", 5, 6, -5);
2325 test("abcdefghij", 0, 9, "abcdefghij", 9, 0, 9);
2326 test("abcdefghij", 0, 9, "abcdefghij", 9, 1, -9);
2327 test("abcdefghij", 0, 9, "abcdefghij", 9, 2, -9);
2328 test("abcdefghij", 0, 9, "abcdefghij", 10, 0, 9);
2329 test("abcdefghij", 0, 9, "abcdefghij", 10, 1, 9);
2330 test("abcdefghij", 0, 9, "abcdefghij", 11, 0, 0);
2331 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 0, 0, 9);
2332 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 0, 1, 8);
2333 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 0, 10, -1);
2334 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 0, 19, -10);
2335}
2336
2337void test22()
2338{
2339 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 0, 20, -11);
2340 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 0, 21, -11);
2341 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 1, 0, 9);
2342 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 1, 1, -1);
2343 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 1, 9, -1);
2344 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 1, 18, -1);
2345 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 1, 19, -1);
2346 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 1, 20, -1);
2347 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 10, 0, 9);
2348 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 10, 1, -10);
2349 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 10, 5, -10);
2350 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 10, 9, -10);
2351 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 10, 10, -10);
2352 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 10, 11, -10);
2353 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 19, 0, 9);
2354 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 19, 1, -19);
2355 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 19, 2, -19);
2356 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 20, 0, 9);
2357 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 20, 1, 9);
2358 test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 21, 0, 0);
2359 test("abcdefghij", 0, 10, "", 0, 0, 10);
2360 test("abcdefghij", 0, 10, "", 0, 1, 10);
2361 test("abcdefghij", 0, 10, "", 1, 0, 0);
2362 test("abcdefghij", 0, 10, "abcde", 0, 0, 10);
2363 test("abcdefghij", 0, 10, "abcde", 0, 1, 9);
2364 test("abcdefghij", 0, 10, "abcde", 0, 2, 8);
2365 test("abcdefghij", 0, 10, "abcde", 0, 4, 6);
2366 test("abcdefghij", 0, 10, "abcde", 0, 5, 5);
2367 test("abcdefghij", 0, 10, "abcde", 0, 6, 5);
2368 test("abcdefghij", 0, 10, "abcde", 1, 0, 10);
2369 test("abcdefghij", 0, 10, "abcde", 1, 1, -1);
2370 test("abcdefghij", 0, 10, "abcde", 1, 2, -1);
2371 test("abcdefghij", 0, 10, "abcde", 1, 3, -1);
2372 test("abcdefghij", 0, 10, "abcde", 1, 4, -1);
2373 test("abcdefghij", 0, 10, "abcde", 1, 5, -1);
2374 test("abcdefghij", 0, 10, "abcde", 2, 0, 10);
2375 test("abcdefghij", 0, 10, "abcde", 2, 1, -2);
2376 test("abcdefghij", 0, 10, "abcde", 2, 2, -2);
2377 test("abcdefghij", 0, 10, "abcde", 2, 3, -2);
2378 test("abcdefghij", 0, 10, "abcde", 2, 4, -2);
2379 test("abcdefghij", 0, 10, "abcde", 4, 0, 10);
2380 test("abcdefghij", 0, 10, "abcde", 4, 1, -4);
2381 test("abcdefghij", 0, 10, "abcde", 4, 2, -4);
2382 test("abcdefghij", 0, 10, "abcde", 5, 0, 10);
2383 test("abcdefghij", 0, 10, "abcde", 5, 1, 10);
2384 test("abcdefghij", 0, 10, "abcde", 6, 0, 0);
2385 test("abcdefghij", 0, 10, "abcdefghij", 0, 0, 10);
2386 test("abcdefghij", 0, 10, "abcdefghij", 0, 1, 9);
2387 test("abcdefghij", 0, 10, "abcdefghij", 0, 5, 5);
2388 test("abcdefghij", 0, 10, "abcdefghij", 0, 9, 1);
2389 test("abcdefghij", 0, 10, "abcdefghij", 0, 10, 0);
2390 test("abcdefghij", 0, 10, "abcdefghij", 0, 11, 0);
2391 test("abcdefghij", 0, 10, "abcdefghij", 1, 0, 10);
2392 test("abcdefghij", 0, 10, "abcdefghij", 1, 1, -1);
2393 test("abcdefghij", 0, 10, "abcdefghij", 1, 4, -1);
2394 test("abcdefghij", 0, 10, "abcdefghij", 1, 8, -1);
2395 test("abcdefghij", 0, 10, "abcdefghij", 1, 9, -1);
2396 test("abcdefghij", 0, 10, "abcdefghij", 1, 10, -1);
2397 test("abcdefghij", 0, 10, "abcdefghij", 5, 0, 10);
2398 test("abcdefghij", 0, 10, "abcdefghij", 5, 1, -5);
2399 test("abcdefghij", 0, 10, "abcdefghij", 5, 2, -5);
2400 test("abcdefghij", 0, 10, "abcdefghij", 5, 4, -5);
2401 test("abcdefghij", 0, 10, "abcdefghij", 5, 5, -5);
2402 test("abcdefghij", 0, 10, "abcdefghij", 5, 6, -5);
2403 test("abcdefghij", 0, 10, "abcdefghij", 9, 0, 10);
2404 test("abcdefghij", 0, 10, "abcdefghij", 9, 1, -9);
2405 test("abcdefghij", 0, 10, "abcdefghij", 9, 2, -9);
2406 test("abcdefghij", 0, 10, "abcdefghij", 10, 0, 10);
2407 test("abcdefghij", 0, 10, "abcdefghij", 10, 1, 10);
2408 test("abcdefghij", 0, 10, "abcdefghij", 11, 0, 0);
2409 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 0, 0, 10);
2410 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 0, 1, 9);
2411 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 0, 10, 0);
2412 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 0, 19, -9);
2413 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 0, 20, -10);
2414 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 0, 21, -10);
2415 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 1, 0, 10);
2416 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 1, 1, -1);
2417 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 1, 9, -1);
2418 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 1, 18, -1);
2419 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 1, 19, -1);
2420 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 1, 20, -1);
2421 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 10, 0, 10);
2422 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 10, 1, -10);
2423 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 10, 5, -10);
2424 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 10, 9, -10);
2425 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 10, 10, -10);
2426 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 10, 11, -10);
2427 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 19, 0, 10);
2428 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 19, 1, -19);
2429 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 19, 2, -19);
2430 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 20, 0, 10);
2431 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 20, 1, 10);
2432 test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 21, 0, 0);
2433 test("abcdefghij", 0, 11, "", 0, 0, 10);
2434 test("abcdefghij", 0, 11, "", 0, 1, 10);
2435 test("abcdefghij", 0, 11, "", 1, 0, 0);
2436 test("abcdefghij", 0, 11, "abcde", 0, 0, 10);
2437 test("abcdefghij", 0, 11, "abcde", 0, 1, 9);
2438 test("abcdefghij", 0, 11, "abcde", 0, 2, 8);
2439}
2440
2441void test23()
2442{
2443 test("abcdefghij", 0, 11, "abcde", 0, 4, 6);
2444 test("abcdefghij", 0, 11, "abcde", 0, 5, 5);
2445 test("abcdefghij", 0, 11, "abcde", 0, 6, 5);
2446 test("abcdefghij", 0, 11, "abcde", 1, 0, 10);
2447 test("abcdefghij", 0, 11, "abcde", 1, 1, -1);
2448 test("abcdefghij", 0, 11, "abcde", 1, 2, -1);
2449 test("abcdefghij", 0, 11, "abcde", 1, 3, -1);
2450 test("abcdefghij", 0, 11, "abcde", 1, 4, -1);
2451 test("abcdefghij", 0, 11, "abcde", 1, 5, -1);
2452 test("abcdefghij", 0, 11, "abcde", 2, 0, 10);
2453 test("abcdefghij", 0, 11, "abcde", 2, 1, -2);
2454 test("abcdefghij", 0, 11, "abcde", 2, 2, -2);
2455 test("abcdefghij", 0, 11, "abcde", 2, 3, -2);
2456 test("abcdefghij", 0, 11, "abcde", 2, 4, -2);
2457 test("abcdefghij", 0, 11, "abcde", 4, 0, 10);
2458 test("abcdefghij", 0, 11, "abcde", 4, 1, -4);
2459 test("abcdefghij", 0, 11, "abcde", 4, 2, -4);
2460 test("abcdefghij", 0, 11, "abcde", 5, 0, 10);
2461 test("abcdefghij", 0, 11, "abcde", 5, 1, 10);
2462 test("abcdefghij", 0, 11, "abcde", 6, 0, 0);
2463 test("abcdefghij", 0, 11, "abcdefghij", 0, 0, 10);
2464 test("abcdefghij", 0, 11, "abcdefghij", 0, 1, 9);
2465 test("abcdefghij", 0, 11, "abcdefghij", 0, 5, 5);
2466 test("abcdefghij", 0, 11, "abcdefghij", 0, 9, 1);
2467 test("abcdefghij", 0, 11, "abcdefghij", 0, 10, 0);
2468 test("abcdefghij", 0, 11, "abcdefghij", 0, 11, 0);
2469 test("abcdefghij", 0, 11, "abcdefghij", 1, 0, 10);
2470 test("abcdefghij", 0, 11, "abcdefghij", 1, 1, -1);
2471 test("abcdefghij", 0, 11, "abcdefghij", 1, 4, -1);
2472 test("abcdefghij", 0, 11, "abcdefghij", 1, 8, -1);
2473 test("abcdefghij", 0, 11, "abcdefghij", 1, 9, -1);
2474 test("abcdefghij", 0, 11, "abcdefghij", 1, 10, -1);
2475 test("abcdefghij", 0, 11, "abcdefghij", 5, 0, 10);
2476 test("abcdefghij", 0, 11, "abcdefghij", 5, 1, -5);
2477 test("abcdefghij", 0, 11, "abcdefghij", 5, 2, -5);
2478 test("abcdefghij", 0, 11, "abcdefghij", 5, 4, -5);
2479 test("abcdefghij", 0, 11, "abcdefghij", 5, 5, -5);
2480 test("abcdefghij", 0, 11, "abcdefghij", 5, 6, -5);
2481 test("abcdefghij", 0, 11, "abcdefghij", 9, 0, 10);
2482 test("abcdefghij", 0, 11, "abcdefghij", 9, 1, -9);
2483 test("abcdefghij", 0, 11, "abcdefghij", 9, 2, -9);
2484 test("abcdefghij", 0, 11, "abcdefghij", 10, 0, 10);
2485 test("abcdefghij", 0, 11, "abcdefghij", 10, 1, 10);
2486 test("abcdefghij", 0, 11, "abcdefghij", 11, 0, 0);
2487 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 0, 0, 10);
2488 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 0, 1, 9);
2489 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 0, 10, 0);
2490 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 0, 19, -9);
2491 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 0, 20, -10);
2492 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 0, 21, -10);
2493 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 1, 0, 10);
2494 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 1, 1, -1);
2495 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 1, 9, -1);
2496 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 1, 18, -1);
2497 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 1, 19, -1);
2498 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 1, 20, -1);
2499 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 10, 0, 10);
2500 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 10, 1, -10);
2501 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 10, 5, -10);
2502 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 10, 9, -10);
2503 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 10, 10, -10);
2504 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 10, 11, -10);
2505 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 19, 0, 10);
2506 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 19, 1, -19);
2507 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 19, 2, -19);
2508 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 20, 0, 10);
2509 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 20, 1, 10);
2510 test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 21, 0, 0);
2511 test("abcdefghij", 1, 0, "", 0, 0, 0);
2512 test("abcdefghij", 1, 0, "", 0, 1, 0);
2513 test("abcdefghij", 1, 0, "", 1, 0, 0);
2514 test("abcdefghij", 1, 0, "abcde", 0, 0, 0);
2515 test("abcdefghij", 1, 0, "abcde", 0, 1, -1);
2516 test("abcdefghij", 1, 0, "abcde", 0, 2, -2);
2517 test("abcdefghij", 1, 0, "abcde", 0, 4, -4);
2518 test("abcdefghij", 1, 0, "abcde", 0, 5, -5);
2519 test("abcdefghij", 1, 0, "abcde", 0, 6, -5);
2520 test("abcdefghij", 1, 0, "abcde", 1, 0, 0);
2521 test("abcdefghij", 1, 0, "abcde", 1, 1, -1);
2522 test("abcdefghij", 1, 0, "abcde", 1, 2, -2);
2523 test("abcdefghij", 1, 0, "abcde", 1, 3, -3);
2524 test("abcdefghij", 1, 0, "abcde", 1, 4, -4);
2525 test("abcdefghij", 1, 0, "abcde", 1, 5, -4);
2526 test("abcdefghij", 1, 0, "abcde", 2, 0, 0);
2527 test("abcdefghij", 1, 0, "abcde", 2, 1, -1);
2528 test("abcdefghij", 1, 0, "abcde", 2, 2, -2);
2529 test("abcdefghij", 1, 0, "abcde", 2, 3, -3);
2530 test("abcdefghij", 1, 0, "abcde", 2, 4, -3);
2531 test("abcdefghij", 1, 0, "abcde", 4, 0, 0);
2532 test("abcdefghij", 1, 0, "abcde", 4, 1, -1);
2533 test("abcdefghij", 1, 0, "abcde", 4, 2, -1);
2534 test("abcdefghij", 1, 0, "abcde", 5, 0, 0);
2535 test("abcdefghij", 1, 0, "abcde", 5, 1, 0);
2536 test("abcdefghij", 1, 0, "abcde", 6, 0, 0);
2537 test("abcdefghij", 1, 0, "abcdefghij", 0, 0, 0);
2538 test("abcdefghij", 1, 0, "abcdefghij", 0, 1, -1);
2539 test("abcdefghij", 1, 0, "abcdefghij", 0, 5, -5);
2540 test("abcdefghij", 1, 0, "abcdefghij", 0, 9, -9);
2541 test("abcdefghij", 1, 0, "abcdefghij", 0, 10, -10);
2542 test("abcdefghij", 1, 0, "abcdefghij", 0, 11, -10);
2543}
2544
2545void test24()
2546{
2547 test("abcdefghij", 1, 0, "abcdefghij", 1, 0, 0);
2548 test("abcdefghij", 1, 0, "abcdefghij", 1, 1, -1);
2549 test("abcdefghij", 1, 0, "abcdefghij", 1, 4, -4);
2550 test("abcdefghij", 1, 0, "abcdefghij", 1, 8, -8);
2551 test("abcdefghij", 1, 0, "abcdefghij", 1, 9, -9);
2552 test("abcdefghij", 1, 0, "abcdefghij", 1, 10, -9);
2553 test("abcdefghij", 1, 0, "abcdefghij", 5, 0, 0);
2554 test("abcdefghij", 1, 0, "abcdefghij", 5, 1, -1);
2555 test("abcdefghij", 1, 0, "abcdefghij", 5, 2, -2);
2556 test("abcdefghij", 1, 0, "abcdefghij", 5, 4, -4);
2557 test("abcdefghij", 1, 0, "abcdefghij", 5, 5, -5);
2558 test("abcdefghij", 1, 0, "abcdefghij", 5, 6, -5);
2559 test("abcdefghij", 1, 0, "abcdefghij", 9, 0, 0);
2560 test("abcdefghij", 1, 0, "abcdefghij", 9, 1, -1);
2561 test("abcdefghij", 1, 0, "abcdefghij", 9, 2, -1);
2562 test("abcdefghij", 1, 0, "abcdefghij", 10, 0, 0);
2563 test("abcdefghij", 1, 0, "abcdefghij", 10, 1, 0);
2564 test("abcdefghij", 1, 0, "abcdefghij", 11, 0, 0);
2565 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 0, 0, 0);
2566 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 0, 1, -1);
2567 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 0, 10, -10);
2568 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 0, 19, -19);
2569 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 0, 20, -20);
2570 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 0, 21, -20);
2571 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 1, 0, 0);
2572 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 1, 1, -1);
2573 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 1, 9, -9);
2574 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 1, 18, -18);
2575 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 1, 19, -19);
2576 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 1, 20, -19);
2577 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 10, 0, 0);
2578 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 10, 1, -1);
2579 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 10, 5, -5);
2580 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 10, 9, -9);
2581 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 10, 10, -10);
2582 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 10, 11, -10);
2583 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 19, 0, 0);
2584 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 19, 1, -1);
2585 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 19, 2, -1);
2586 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 20, 0, 0);
2587 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 20, 1, 0);
2588 test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 21, 0, 0);
2589 test("abcdefghij", 1, 1, "", 0, 0, 1);
2590 test("abcdefghij", 1, 1, "", 0, 1, 1);
2591 test("abcdefghij", 1, 1, "", 1, 0, 0);
2592 test("abcdefghij", 1, 1, "abcde", 0, 0, 1);
2593 test("abcdefghij", 1, 1, "abcde", 0, 1, 1);
2594 test("abcdefghij", 1, 1, "abcde", 0, 2, 1);
2595 test("abcdefghij", 1, 1, "abcde", 0, 4, 1);
2596 test("abcdefghij", 1, 1, "abcde", 0, 5, 1);
2597 test("abcdefghij", 1, 1, "abcde", 0, 6, 1);
2598 test("abcdefghij", 1, 1, "abcde", 1, 0, 1);
2599 test("abcdefghij", 1, 1, "abcde", 1, 1, 0);
2600 test("abcdefghij", 1, 1, "abcde", 1, 2, -1);
2601 test("abcdefghij", 1, 1, "abcde", 1, 3, -2);
2602 test("abcdefghij", 1, 1, "abcde", 1, 4, -3);
2603 test("abcdefghij", 1, 1, "abcde", 1, 5, -3);
2604 test("abcdefghij", 1, 1, "abcde", 2, 0, 1);
2605 test("abcdefghij", 1, 1, "abcde", 2, 1, -1);
2606 test("abcdefghij", 1, 1, "abcde", 2, 2, -1);
2607 test("abcdefghij", 1, 1, "abcde", 2, 3, -1);
2608 test("abcdefghij", 1, 1, "abcde", 2, 4, -1);
2609 test("abcdefghij", 1, 1, "abcde", 4, 0, 1);
2610 test("abcdefghij", 1, 1, "abcde", 4, 1, -3);
2611 test("abcdefghij", 1, 1, "abcde", 4, 2, -3);
2612 test("abcdefghij", 1, 1, "abcde", 5, 0, 1);
2613 test("abcdefghij", 1, 1, "abcde", 5, 1, 1);
2614 test("abcdefghij", 1, 1, "abcde", 6, 0, 0);
2615 test("abcdefghij", 1, 1, "abcdefghij", 0, 0, 1);
2616 test("abcdefghij", 1, 1, "abcdefghij", 0, 1, 1);
2617 test("abcdefghij", 1, 1, "abcdefghij", 0, 5, 1);
2618 test("abcdefghij", 1, 1, "abcdefghij", 0, 9, 1);
2619 test("abcdefghij", 1, 1, "abcdefghij", 0, 10, 1);
2620 test("abcdefghij", 1, 1, "abcdefghij", 0, 11, 1);
2621 test("abcdefghij", 1, 1, "abcdefghij", 1, 0, 1);
2622 test("abcdefghij", 1, 1, "abcdefghij", 1, 1, 0);
2623 test("abcdefghij", 1, 1, "abcdefghij", 1, 4, -3);
2624 test("abcdefghij", 1, 1, "abcdefghij", 1, 8, -7);
2625 test("abcdefghij", 1, 1, "abcdefghij", 1, 9, -8);
2626 test("abcdefghij", 1, 1, "abcdefghij", 1, 10, -8);
2627 test("abcdefghij", 1, 1, "abcdefghij", 5, 0, 1);
2628 test("abcdefghij", 1, 1, "abcdefghij", 5, 1, -4);
2629 test("abcdefghij", 1, 1, "abcdefghij", 5, 2, -4);
2630 test("abcdefghij", 1, 1, "abcdefghij", 5, 4, -4);
2631 test("abcdefghij", 1, 1, "abcdefghij", 5, 5, -4);
2632 test("abcdefghij", 1, 1, "abcdefghij", 5, 6, -4);
2633 test("abcdefghij", 1, 1, "abcdefghij", 9, 0, 1);
2634 test("abcdefghij", 1, 1, "abcdefghij", 9, 1, -8);
2635 test("abcdefghij", 1, 1, "abcdefghij", 9, 2, -8);
2636 test("abcdefghij", 1, 1, "abcdefghij", 10, 0, 1);
2637 test("abcdefghij", 1, 1, "abcdefghij", 10, 1, 1);
2638 test("abcdefghij", 1, 1, "abcdefghij", 11, 0, 0);
2639 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 0, 0, 1);
2640 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 0, 1, 1);
2641 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 0, 10, 1);
2642 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 0, 19, 1);
2643 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 0, 20, 1);
2644 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 0, 21, 1);
2645 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1, 0, 1);
2646 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1, 1, 0);
2647}
2648
2649void test25()
2650{
2651 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1, 9, -8);
2652 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1, 18, -17);
2653 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1, 19, -18);
2654 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1, 20, -18);
2655 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 10, 0, 1);
2656 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 10, 1, -9);
2657 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 10, 5, -9);
2658 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 10, 9, -9);
2659 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 10, 10, -9);
2660 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 10, 11, -9);
2661 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 19, 0, 1);
2662 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 19, 1, -18);
2663 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 19, 2, -18);
2664 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 20, 0, 1);
2665 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 20, 1, 1);
2666 test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 21, 0, 0);
2667 test("abcdefghij", 1, 4, "", 0, 0, 4);
2668 test("abcdefghij", 1, 4, "", 0, 1, 4);
2669 test("abcdefghij", 1, 4, "", 1, 0, 0);
2670 test("abcdefghij", 1, 4, "abcde", 0, 0, 4);
2671 test("abcdefghij", 1, 4, "abcde", 0, 1, 1);
2672 test("abcdefghij", 1, 4, "abcde", 0, 2, 1);
2673 test("abcdefghij", 1, 4, "abcde", 0, 4, 1);
2674 test("abcdefghij", 1, 4, "abcde", 0, 5, 1);
2675 test("abcdefghij", 1, 4, "abcde", 0, 6, 1);
2676 test("abcdefghij", 1, 4, "abcde", 1, 0, 4);
2677 test("abcdefghij", 1, 4, "abcde", 1, 1, 3);
2678 test("abcdefghij", 1, 4, "abcde", 1, 2, 2);
2679 test("abcdefghij", 1, 4, "abcde", 1, 3, 1);
2680 test("abcdefghij", 1, 4, "abcde", 1, 4, 0);
2681 test("abcdefghij", 1, 4, "abcde", 1, 5, 0);
2682 test("abcdefghij", 1, 4, "abcde", 2, 0, 4);
2683 test("abcdefghij", 1, 4, "abcde", 2, 1, -1);
2684 test("abcdefghij", 1, 4, "abcde", 2, 2, -1);
2685 test("abcdefghij", 1, 4, "abcde", 2, 3, -1);
2686 test("abcdefghij", 1, 4, "abcde", 2, 4, -1);
2687 test("abcdefghij", 1, 4, "abcde", 4, 0, 4);
2688 test("abcdefghij", 1, 4, "abcde", 4, 1, -3);
2689 test("abcdefghij", 1, 4, "abcde", 4, 2, -3);
2690 test("abcdefghij", 1, 4, "abcde", 5, 0, 4);
2691 test("abcdefghij", 1, 4, "abcde", 5, 1, 4);
2692 test("abcdefghij", 1, 4, "abcde", 6, 0, 0);
2693 test("abcdefghij", 1, 4, "abcdefghij", 0, 0, 4);
2694 test("abcdefghij", 1, 4, "abcdefghij", 0, 1, 1);
2695 test("abcdefghij", 1, 4, "abcdefghij", 0, 5, 1);
2696 test("abcdefghij", 1, 4, "abcdefghij", 0, 9, 1);
2697 test("abcdefghij", 1, 4, "abcdefghij", 0, 10, 1);
2698 test("abcdefghij", 1, 4, "abcdefghij", 0, 11, 1);
2699 test("abcdefghij", 1, 4, "abcdefghij", 1, 0, 4);
2700 test("abcdefghij", 1, 4, "abcdefghij", 1, 1, 3);
2701 test("abcdefghij", 1, 4, "abcdefghij", 1, 4, 0);
2702 test("abcdefghij", 1, 4, "abcdefghij", 1, 8, -4);
2703 test("abcdefghij", 1, 4, "abcdefghij", 1, 9, -5);
2704 test("abcdefghij", 1, 4, "abcdefghij", 1, 10, -5);
2705 test("abcdefghij", 1, 4, "abcdefghij", 5, 0, 4);
2706 test("abcdefghij", 1, 4, "abcdefghij", 5, 1, -4);
2707 test("abcdefghij", 1, 4, "abcdefghij", 5, 2, -4);
2708 test("abcdefghij", 1, 4, "abcdefghij", 5, 4, -4);
2709 test("abcdefghij", 1, 4, "abcdefghij", 5, 5, -4);
2710 test("abcdefghij", 1, 4, "abcdefghij", 5, 6, -4);
2711 test("abcdefghij", 1, 4, "abcdefghij", 9, 0, 4);
2712 test("abcdefghij", 1, 4, "abcdefghij", 9, 1, -8);
2713 test("abcdefghij", 1, 4, "abcdefghij", 9, 2, -8);
2714 test("abcdefghij", 1, 4, "abcdefghij", 10, 0, 4);
2715 test("abcdefghij", 1, 4, "abcdefghij", 10, 1, 4);
2716 test("abcdefghij", 1, 4, "abcdefghij", 11, 0, 0);
2717 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 0, 0, 4);
2718 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 0, 1, 1);
2719 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 0, 10, 1);
2720 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 0, 19, 1);
2721 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 0, 20, 1);
2722 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 0, 21, 1);
2723 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1, 0, 4);
2724 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1, 1, 3);
2725 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1, 9, -5);
2726 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1, 18, -14);
2727 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1, 19, -15);
2728 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1, 20, -15);
2729 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 10, 0, 4);
2730 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 10, 1, -9);
2731 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 10, 5, -9);
2732 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 10, 9, -9);
2733 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 10, 10, -9);
2734 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 10, 11, -9);
2735 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 19, 0, 4);
2736 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 19, 1, -18);
2737 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 19, 2, -18);
2738 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 20, 0, 4);
2739 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 20, 1, 4);
2740 test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 21, 0, 0);
2741 test("abcdefghij", 1, 8, "", 0, 0, 8);
2742 test("abcdefghij", 1, 8, "", 0, 1, 8);
2743 test("abcdefghij", 1, 8, "", 1, 0, 0);
2744 test("abcdefghij", 1, 8, "abcde", 0, 0, 8);
2745 test("abcdefghij", 1, 8, "abcde", 0, 1, 1);
2746 test("abcdefghij", 1, 8, "abcde", 0, 2, 1);
2747 test("abcdefghij", 1, 8, "abcde", 0, 4, 1);
2748 test("abcdefghij", 1, 8, "abcde", 0, 5, 1);
2749 test("abcdefghij", 1, 8, "abcde", 0, 6, 1);
2750 test("abcdefghij", 1, 8, "abcde", 1, 0, 8);
2751}
2752
2753void test26()
2754{
2755 test("abcdefghij", 1, 8, "abcde", 1, 1, 7);
2756 test("abcdefghij", 1, 8, "abcde", 1, 2, 6);
2757 test("abcdefghij", 1, 8, "abcde", 1, 3, 5);
2758 test("abcdefghij", 1, 8, "abcde", 1, 4, 4);
2759 test("abcdefghij", 1, 8, "abcde", 1, 5, 4);
2760 test("abcdefghij", 1, 8, "abcde", 2, 0, 8);
2761 test("abcdefghij", 1, 8, "abcde", 2, 1, -1);
2762 test("abcdefghij", 1, 8, "abcde", 2, 2, -1);
2763 test("abcdefghij", 1, 8, "abcde", 2, 3, -1);
2764 test("abcdefghij", 1, 8, "abcde", 2, 4, -1);
2765 test("abcdefghij", 1, 8, "abcde", 4, 0, 8);
2766 test("abcdefghij", 1, 8, "abcde", 4, 1, -3);
2767 test("abcdefghij", 1, 8, "abcde", 4, 2, -3);
2768 test("abcdefghij", 1, 8, "abcde", 5, 0, 8);
2769 test("abcdefghij", 1, 8, "abcde", 5, 1, 8);
2770 test("abcdefghij", 1, 8, "abcde", 6, 0, 0);
2771 test("abcdefghij", 1, 8, "abcdefghij", 0, 0, 8);
2772 test("abcdefghij", 1, 8, "abcdefghij", 0, 1, 1);
2773 test("abcdefghij", 1, 8, "abcdefghij", 0, 5, 1);
2774 test("abcdefghij", 1, 8, "abcdefghij", 0, 9, 1);
2775 test("abcdefghij", 1, 8, "abcdefghij", 0, 10, 1);
2776 test("abcdefghij", 1, 8, "abcdefghij", 0, 11, 1);
2777 test("abcdefghij", 1, 8, "abcdefghij", 1, 0, 8);
2778 test("abcdefghij", 1, 8, "abcdefghij", 1, 1, 7);
2779 test("abcdefghij", 1, 8, "abcdefghij", 1, 4, 4);
2780 test("abcdefghij", 1, 8, "abcdefghij", 1, 8, 0);
2781 test("abcdefghij", 1, 8, "abcdefghij", 1, 9, -1);
2782 test("abcdefghij", 1, 8, "abcdefghij", 1, 10, -1);
2783 test("abcdefghij", 1, 8, "abcdefghij", 5, 0, 8);
2784 test("abcdefghij", 1, 8, "abcdefghij", 5, 1, -4);
2785 test("abcdefghij", 1, 8, "abcdefghij", 5, 2, -4);
2786 test("abcdefghij", 1, 8, "abcdefghij", 5, 4, -4);
2787 test("abcdefghij", 1, 8, "abcdefghij", 5, 5, -4);
2788 test("abcdefghij", 1, 8, "abcdefghij", 5, 6, -4);
2789 test("abcdefghij", 1, 8, "abcdefghij", 9, 0, 8);
2790 test("abcdefghij", 1, 8, "abcdefghij", 9, 1, -8);
2791 test("abcdefghij", 1, 8, "abcdefghij", 9, 2, -8);
2792 test("abcdefghij", 1, 8, "abcdefghij", 10, 0, 8);
2793 test("abcdefghij", 1, 8, "abcdefghij", 10, 1, 8);
2794 test("abcdefghij", 1, 8, "abcdefghij", 11, 0, 0);
2795 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 0, 0, 8);
2796 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 0, 1, 1);
2797 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 0, 10, 1);
2798 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 0, 19, 1);
2799 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 0, 20, 1);
2800 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 0, 21, 1);
2801 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1, 0, 8);
2802 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1, 1, 7);
2803 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1, 9, -1);
2804 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1, 18, -10);
2805 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1, 19, -11);
2806 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1, 20, -11);
2807 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 10, 0, 8);
2808 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 10, 1, -9);
2809 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 10, 5, -9);
2810 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 10, 9, -9);
2811 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 10, 10, -9);
2812 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 10, 11, -9);
2813 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 19, 0, 8);
2814 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 19, 1, -18);
2815 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 19, 2, -18);
2816 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 20, 0, 8);
2817 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 20, 1, 8);
2818 test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 21, 0, 0);
2819 test("abcdefghij", 1, 9, "", 0, 0, 9);
2820 test("abcdefghij", 1, 9, "", 0, 1, 9);
2821 test("abcdefghij", 1, 9, "", 1, 0, 0);
2822 test("abcdefghij", 1, 9, "abcde", 0, 0, 9);
2823 test("abcdefghij", 1, 9, "abcde", 0, 1, 1);
2824 test("abcdefghij", 1, 9, "abcde", 0, 2, 1);
2825 test("abcdefghij", 1, 9, "abcde", 0, 4, 1);
2826 test("abcdefghij", 1, 9, "abcde", 0, 5, 1);
2827 test("abcdefghij", 1, 9, "abcde", 0, 6, 1);
2828 test("abcdefghij", 1, 9, "abcde", 1, 0, 9);
2829 test("abcdefghij", 1, 9, "abcde", 1, 1, 8);
2830 test("abcdefghij", 1, 9, "abcde", 1, 2, 7);
2831 test("abcdefghij", 1, 9, "abcde", 1, 3, 6);
2832 test("abcdefghij", 1, 9, "abcde", 1, 4, 5);
2833 test("abcdefghij", 1, 9, "abcde", 1, 5, 5);
2834 test("abcdefghij", 1, 9, "abcde", 2, 0, 9);
2835 test("abcdefghij", 1, 9, "abcde", 2, 1, -1);
2836 test("abcdefghij", 1, 9, "abcde", 2, 2, -1);
2837 test("abcdefghij", 1, 9, "abcde", 2, 3, -1);
2838 test("abcdefghij", 1, 9, "abcde", 2, 4, -1);
2839 test("abcdefghij", 1, 9, "abcde", 4, 0, 9);
2840 test("abcdefghij", 1, 9, "abcde", 4, 1, -3);
2841 test("abcdefghij", 1, 9, "abcde", 4, 2, -3);
2842 test("abcdefghij", 1, 9, "abcde", 5, 0, 9);
2843 test("abcdefghij", 1, 9, "abcde", 5, 1, 9);
2844 test("abcdefghij", 1, 9, "abcde", 6, 0, 0);
2845 test("abcdefghij", 1, 9, "abcdefghij", 0, 0, 9);
2846 test("abcdefghij", 1, 9, "abcdefghij", 0, 1, 1);
2847 test("abcdefghij", 1, 9, "abcdefghij", 0, 5, 1);
2848 test("abcdefghij", 1, 9, "abcdefghij", 0, 9, 1);
2849 test("abcdefghij", 1, 9, "abcdefghij", 0, 10, 1);
2850 test("abcdefghij", 1, 9, "abcdefghij", 0, 11, 1);
2851 test("abcdefghij", 1, 9, "abcdefghij", 1, 0, 9);
2852 test("abcdefghij", 1, 9, "abcdefghij", 1, 1, 8);
2853 test("abcdefghij", 1, 9, "abcdefghij", 1, 4, 5);
2854 test("abcdefghij", 1, 9, "abcdefghij", 1, 8, 1);
2855}
2856
2857void test27()
2858{
2859 test("abcdefghij", 1, 9, "abcdefghij", 1, 9, 0);
2860 test("abcdefghij", 1, 9, "abcdefghij", 1, 10, 0);
2861 test("abcdefghij", 1, 9, "abcdefghij", 5, 0, 9);
2862 test("abcdefghij", 1, 9, "abcdefghij", 5, 1, -4);
2863 test("abcdefghij", 1, 9, "abcdefghij", 5, 2, -4);
2864 test("abcdefghij", 1, 9, "abcdefghij", 5, 4, -4);
2865 test("abcdefghij", 1, 9, "abcdefghij", 5, 5, -4);
2866 test("abcdefghij", 1, 9, "abcdefghij", 5, 6, -4);
2867 test("abcdefghij", 1, 9, "abcdefghij", 9, 0, 9);
2868 test("abcdefghij", 1, 9, "abcdefghij", 9, 1, -8);
2869 test("abcdefghij", 1, 9, "abcdefghij", 9, 2, -8);
2870 test("abcdefghij", 1, 9, "abcdefghij", 10, 0, 9);
2871 test("abcdefghij", 1, 9, "abcdefghij", 10, 1, 9);
2872 test("abcdefghij", 1, 9, "abcdefghij", 11, 0, 0);
2873 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 0, 0, 9);
2874 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 0, 1, 1);
2875 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 0, 10, 1);
2876 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 0, 19, 1);
2877 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 0, 20, 1);
2878 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 0, 21, 1);
2879 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1, 0, 9);
2880 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1, 1, 8);
2881 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1, 9, 0);
2882 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1, 18, -9);
2883 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1, 19, -10);
2884 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1, 20, -10);
2885 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 10, 0, 9);
2886 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 10, 1, -9);
2887 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 10, 5, -9);
2888 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 10, 9, -9);
2889 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 10, 10, -9);
2890 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 10, 11, -9);
2891 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 19, 0, 9);
2892 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 19, 1, -18);
2893 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 19, 2, -18);
2894 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 20, 0, 9);
2895 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 20, 1, 9);
2896 test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 21, 0, 0);
2897 test("abcdefghij", 1, 10, "", 0, 0, 9);
2898 test("abcdefghij", 1, 10, "", 0, 1, 9);
2899 test("abcdefghij", 1, 10, "", 1, 0, 0);
2900 test("abcdefghij", 1, 10, "abcde", 0, 0, 9);
2901 test("abcdefghij", 1, 10, "abcde", 0, 1, 1);
2902 test("abcdefghij", 1, 10, "abcde", 0, 2, 1);
2903 test("abcdefghij", 1, 10, "abcde", 0, 4, 1);
2904 test("abcdefghij", 1, 10, "abcde", 0, 5, 1);
2905 test("abcdefghij", 1, 10, "abcde", 0, 6, 1);
2906 test("abcdefghij", 1, 10, "abcde", 1, 0, 9);
2907 test("abcdefghij", 1, 10, "abcde", 1, 1, 8);
2908 test("abcdefghij", 1, 10, "abcde", 1, 2, 7);
2909 test("abcdefghij", 1, 10, "abcde", 1, 3, 6);
2910 test("abcdefghij", 1, 10, "abcde", 1, 4, 5);
2911 test("abcdefghij", 1, 10, "abcde", 1, 5, 5);
2912 test("abcdefghij", 1, 10, "abcde", 2, 0, 9);
2913 test("abcdefghij", 1, 10, "abcde", 2, 1, -1);
2914 test("abcdefghij", 1, 10, "abcde", 2, 2, -1);
2915 test("abcdefghij", 1, 10, "abcde", 2, 3, -1);
2916 test("abcdefghij", 1, 10, "abcde", 2, 4, -1);
2917 test("abcdefghij", 1, 10, "abcde", 4, 0, 9);
2918 test("abcdefghij", 1, 10, "abcde", 4, 1, -3);
2919 test("abcdefghij", 1, 10, "abcde", 4, 2, -3);
2920 test("abcdefghij", 1, 10, "abcde", 5, 0, 9);
2921 test("abcdefghij", 1, 10, "abcde", 5, 1, 9);
2922 test("abcdefghij", 1, 10, "abcde", 6, 0, 0);
2923 test("abcdefghij", 1, 10, "abcdefghij", 0, 0, 9);
2924 test("abcdefghij", 1, 10, "abcdefghij", 0, 1, 1);
2925 test("abcdefghij", 1, 10, "abcdefghij", 0, 5, 1);
2926 test("abcdefghij", 1, 10, "abcdefghij", 0, 9, 1);
2927 test("abcdefghij", 1, 10, "abcdefghij", 0, 10, 1);
2928 test("abcdefghij", 1, 10, "abcdefghij", 0, 11, 1);
2929 test("abcdefghij", 1, 10, "abcdefghij", 1, 0, 9);
2930 test("abcdefghij", 1, 10, "abcdefghij", 1, 1, 8);
2931 test("abcdefghij", 1, 10, "abcdefghij", 1, 4, 5);
2932 test("abcdefghij", 1, 10, "abcdefghij", 1, 8, 1);
2933 test("abcdefghij", 1, 10, "abcdefghij", 1, 9, 0);
2934 test("abcdefghij", 1, 10, "abcdefghij", 1, 10, 0);
2935 test("abcdefghij", 1, 10, "abcdefghij", 5, 0, 9);
2936 test("abcdefghij", 1, 10, "abcdefghij", 5, 1, -4);
2937 test("abcdefghij", 1, 10, "abcdefghij", 5, 2, -4);
2938 test("abcdefghij", 1, 10, "abcdefghij", 5, 4, -4);
2939 test("abcdefghij", 1, 10, "abcdefghij", 5, 5, -4);
2940 test("abcdefghij", 1, 10, "abcdefghij", 5, 6, -4);
2941 test("abcdefghij", 1, 10, "abcdefghij", 9, 0, 9);
2942 test("abcdefghij", 1, 10, "abcdefghij", 9, 1, -8);
2943 test("abcdefghij", 1, 10, "abcdefghij", 9, 2, -8);
2944 test("abcdefghij", 1, 10, "abcdefghij", 10, 0, 9);
2945 test("abcdefghij", 1, 10, "abcdefghij", 10, 1, 9);
2946 test("abcdefghij", 1, 10, "abcdefghij", 11, 0, 0);
2947 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 0, 0, 9);
2948 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 0, 1, 1);
2949 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 0, 10, 1);
2950 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 0, 19, 1);
2951 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 0, 20, 1);
2952 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 0, 21, 1);
2953 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1, 0, 9);
2954 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1, 1, 8);
2955 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1, 9, 0);
2956 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1, 18, -9);
2957 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1, 19, -10);
2958 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1, 20, -10);
2959}
2960
2961void test28()
2962{
2963 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 10, 0, 9);
2964 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 10, 1, -9);
2965 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 10, 5, -9);
2966 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 10, 9, -9);
2967 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 10, 10, -9);
2968 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 10, 11, -9);
2969 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 19, 0, 9);
2970 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 19, 1, -18);
2971 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 19, 2, -18);
2972 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 20, 0, 9);
2973 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 20, 1, 9);
2974 test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 21, 0, 0);
2975 test("abcdefghij", 5, 0, "", 0, 0, 0);
2976 test("abcdefghij", 5, 0, "", 0, 1, 0);
2977 test("abcdefghij", 5, 0, "", 1, 0, 0);
2978 test("abcdefghij", 5, 0, "abcde", 0, 0, 0);
2979 test("abcdefghij", 5, 0, "abcde", 0, 1, -1);
2980 test("abcdefghij", 5, 0, "abcde", 0, 2, -2);
2981 test("abcdefghij", 5, 0, "abcde", 0, 4, -4);
2982 test("abcdefghij", 5, 0, "abcde", 0, 5, -5);
2983 test("abcdefghij", 5, 0, "abcde", 0, 6, -5);
2984 test("abcdefghij", 5, 0, "abcde", 1, 0, 0);
2985 test("abcdefghij", 5, 0, "abcde", 1, 1, -1);
2986 test("abcdefghij", 5, 0, "abcde", 1, 2, -2);
2987 test("abcdefghij", 5, 0, "abcde", 1, 3, -3);
2988 test("abcdefghij", 5, 0, "abcde", 1, 4, -4);
2989 test("abcdefghij", 5, 0, "abcde", 1, 5, -4);
2990 test("abcdefghij", 5, 0, "abcde", 2, 0, 0);
2991 test("abcdefghij", 5, 0, "abcde", 2, 1, -1);
2992 test("abcdefghij", 5, 0, "abcde", 2, 2, -2);
2993 test("abcdefghij", 5, 0, "abcde", 2, 3, -3);
2994 test("abcdefghij", 5, 0, "abcde", 2, 4, -3);
2995 test("abcdefghij", 5, 0, "abcde", 4, 0, 0);
2996 test("abcdefghij", 5, 0, "abcde", 4, 1, -1);
2997 test("abcdefghij", 5, 0, "abcde", 4, 2, -1);
2998 test("abcdefghij", 5, 0, "abcde", 5, 0, 0);
2999 test("abcdefghij", 5, 0, "abcde", 5, 1, 0);
3000 test("abcdefghij", 5, 0, "abcde", 6, 0, 0);
3001 test("abcdefghij", 5, 0, "abcdefghij", 0, 0, 0);
3002 test("abcdefghij", 5, 0, "abcdefghij", 0, 1, -1);
3003 test("abcdefghij", 5, 0, "abcdefghij", 0, 5, -5);
3004 test("abcdefghij", 5, 0, "abcdefghij", 0, 9, -9);
3005 test("abcdefghij", 5, 0, "abcdefghij", 0, 10, -10);
3006 test("abcdefghij", 5, 0, "abcdefghij", 0, 11, -10);
3007 test("abcdefghij", 5, 0, "abcdefghij", 1, 0, 0);
3008 test("abcdefghij", 5, 0, "abcdefghij", 1, 1, -1);
3009 test("abcdefghij", 5, 0, "abcdefghij", 1, 4, -4);
3010 test("abcdefghij", 5, 0, "abcdefghij", 1, 8, -8);
3011 test("abcdefghij", 5, 0, "abcdefghij", 1, 9, -9);
3012 test("abcdefghij", 5, 0, "abcdefghij", 1, 10, -9);
3013 test("abcdefghij", 5, 0, "abcdefghij", 5, 0, 0);
3014 test("abcdefghij", 5, 0, "abcdefghij", 5, 1, -1);
3015 test("abcdefghij", 5, 0, "abcdefghij", 5, 2, -2);
3016 test("abcdefghij", 5, 0, "abcdefghij", 5, 4, -4);
3017 test("abcdefghij", 5, 0, "abcdefghij", 5, 5, -5);
3018 test("abcdefghij", 5, 0, "abcdefghij", 5, 6, -5);
3019 test("abcdefghij", 5, 0, "abcdefghij", 9, 0, 0);
3020 test("abcdefghij", 5, 0, "abcdefghij", 9, 1, -1);
3021 test("abcdefghij", 5, 0, "abcdefghij", 9, 2, -1);
3022 test("abcdefghij", 5, 0, "abcdefghij", 10, 0, 0);
3023 test("abcdefghij", 5, 0, "abcdefghij", 10, 1, 0);
3024 test("abcdefghij", 5, 0, "abcdefghij", 11, 0, 0);
3025 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 0, 0, 0);
3026 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 0, 1, -1);
3027 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 0, 10, -10);
3028 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 0, 19, -19);
3029 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 0, 20, -20);
3030 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 0, 21, -20);
3031 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 1, 0, 0);
3032 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 1, 1, -1);
3033 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 1, 9, -9);
3034 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 1, 18, -18);
3035 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 1, 19, -19);
3036 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 1, 20, -19);
3037 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 10, 0, 0);
3038 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 10, 1, -1);
3039 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 10, 5, -5);
3040 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 10, 9, -9);
3041 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 10, 10, -10);
3042 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 10, 11, -10);
3043 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 19, 0, 0);
3044 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 19, 1, -1);
3045 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 19, 2, -1);
3046 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 20, 0, 0);
3047 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 20, 1, 0);
3048 test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 21, 0, 0);
3049 test("abcdefghij", 5, 1, "", 0, 0, 1);
3050 test("abcdefghij", 5, 1, "", 0, 1, 1);
3051 test("abcdefghij", 5, 1, "", 1, 0, 0);
3052 test("abcdefghij", 5, 1, "abcde", 0, 0, 1);
3053 test("abcdefghij", 5, 1, "abcde", 0, 1, 5);
3054 test("abcdefghij", 5, 1, "abcde", 0, 2, 5);
3055 test("abcdefghij", 5, 1, "abcde", 0, 4, 5);
3056 test("abcdefghij", 5, 1, "abcde", 0, 5, 5);
3057 test("abcdefghij", 5, 1, "abcde", 0, 6, 5);
3058 test("abcdefghij", 5, 1, "abcde", 1, 0, 1);
3059 test("abcdefghij", 5, 1, "abcde", 1, 1, 4);
3060 test("abcdefghij", 5, 1, "abcde", 1, 2, 4);
3061 test("abcdefghij", 5, 1, "abcde", 1, 3, 4);
3062 test("abcdefghij", 5, 1, "abcde", 1, 4, 4);
3063}
3064
3065void test29()
3066{
3067 test("abcdefghij", 5, 1, "abcde", 1, 5, 4);
3068 test("abcdefghij", 5, 1, "abcde", 2, 0, 1);
3069 test("abcdefghij", 5, 1, "abcde", 2, 1, 3);
3070 test("abcdefghij", 5, 1, "abcde", 2, 2, 3);
3071 test("abcdefghij", 5, 1, "abcde", 2, 3, 3);
3072 test("abcdefghij", 5, 1, "abcde", 2, 4, 3);
3073 test("abcdefghij", 5, 1, "abcde", 4, 0, 1);
3074 test("abcdefghij", 5, 1, "abcde", 4, 1, 1);
3075 test("abcdefghij", 5, 1, "abcde", 4, 2, 1);
3076 test("abcdefghij", 5, 1, "abcde", 5, 0, 1);
3077 test("abcdefghij", 5, 1, "abcde", 5, 1, 1);
3078 test("abcdefghij", 5, 1, "abcde", 6, 0, 0);
3079 test("abcdefghij", 5, 1, "abcdefghij", 0, 0, 1);
3080 test("abcdefghij", 5, 1, "abcdefghij", 0, 1, 5);
3081 test("abcdefghij", 5, 1, "abcdefghij", 0, 5, 5);
3082 test("abcdefghij", 5, 1, "abcdefghij", 0, 9, 5);
3083 test("abcdefghij", 5, 1, "abcdefghij", 0, 10, 5);
3084 test("abcdefghij", 5, 1, "abcdefghij", 0, 11, 5);
3085 test("abcdefghij", 5, 1, "abcdefghij", 1, 0, 1);
3086 test("abcdefghij", 5, 1, "abcdefghij", 1, 1, 4);
3087 test("abcdefghij", 5, 1, "abcdefghij", 1, 4, 4);
3088 test("abcdefghij", 5, 1, "abcdefghij", 1, 8, 4);
3089 test("abcdefghij", 5, 1, "abcdefghij", 1, 9, 4);
3090 test("abcdefghij", 5, 1, "abcdefghij", 1, 10, 4);
3091 test("abcdefghij", 5, 1, "abcdefghij", 5, 0, 1);
3092 test("abcdefghij", 5, 1, "abcdefghij", 5, 1, 0);
3093 test("abcdefghij", 5, 1, "abcdefghij", 5, 2, -1);
3094 test("abcdefghij", 5, 1, "abcdefghij", 5, 4, -3);
3095 test("abcdefghij", 5, 1, "abcdefghij", 5, 5, -4);
3096 test("abcdefghij", 5, 1, "abcdefghij", 5, 6, -4);
3097 test("abcdefghij", 5, 1, "abcdefghij", 9, 0, 1);
3098 test("abcdefghij", 5, 1, "abcdefghij", 9, 1, -4);
3099 test("abcdefghij", 5, 1, "abcdefghij", 9, 2, -4);
3100 test("abcdefghij", 5, 1, "abcdefghij", 10, 0, 1);
3101 test("abcdefghij", 5, 1, "abcdefghij", 10, 1, 1);
3102 test("abcdefghij", 5, 1, "abcdefghij", 11, 0, 0);
3103 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 0, 0, 1);
3104 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 0, 1, 5);
3105 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 0, 10, 5);
3106 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 0, 19, 5);
3107 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 0, 20, 5);
3108 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 0, 21, 5);
3109 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 1, 0, 1);
3110 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 1, 1, 4);
3111 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 1, 9, 4);
3112 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 1, 18, 4);
3113 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 1, 19, 4);
3114 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 1, 20, 4);
3115 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 10, 0, 1);
3116 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 10, 1, -5);
3117 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 10, 5, -5);
3118 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 10, 9, -5);
3119 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 10, 10, -5);
3120 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 10, 11, -5);
3121 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 19, 0, 1);
3122 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 19, 1, -14);
3123 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 19, 2, -14);
3124 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 20, 0, 1);
3125 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 20, 1, 1);
3126 test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 21, 0, 0);
3127 test("abcdefghij", 5, 2, "", 0, 0, 2);
3128 test("abcdefghij", 5, 2, "", 0, 1, 2);
3129 test("abcdefghij", 5, 2, "", 1, 0, 0);
3130 test("abcdefghij", 5, 2, "abcde", 0, 0, 2);
3131 test("abcdefghij", 5, 2, "abcde", 0, 1, 5);
3132 test("abcdefghij", 5, 2, "abcde", 0, 2, 5);
3133 test("abcdefghij", 5, 2, "abcde", 0, 4, 5);
3134 test("abcdefghij", 5, 2, "abcde", 0, 5, 5);
3135 test("abcdefghij", 5, 2, "abcde", 0, 6, 5);
3136 test("abcdefghij", 5, 2, "abcde", 1, 0, 2);
3137 test("abcdefghij", 5, 2, "abcde", 1, 1, 4);
3138 test("abcdefghij", 5, 2, "abcde", 1, 2, 4);
3139 test("abcdefghij", 5, 2, "abcde", 1, 3, 4);
3140 test("abcdefghij", 5, 2, "abcde", 1, 4, 4);
3141 test("abcdefghij", 5, 2, "abcde", 1, 5, 4);
3142 test("abcdefghij", 5, 2, "abcde", 2, 0, 2);
3143 test("abcdefghij", 5, 2, "abcde", 2, 1, 3);
3144 test("abcdefghij", 5, 2, "abcde", 2, 2, 3);
3145 test("abcdefghij", 5, 2, "abcde", 2, 3, 3);
3146 test("abcdefghij", 5, 2, "abcde", 2, 4, 3);
3147 test("abcdefghij", 5, 2, "abcde", 4, 0, 2);
3148 test("abcdefghij", 5, 2, "abcde", 4, 1, 1);
3149 test("abcdefghij", 5, 2, "abcde", 4, 2, 1);
3150 test("abcdefghij", 5, 2, "abcde", 5, 0, 2);
3151 test("abcdefghij", 5, 2, "abcde", 5, 1, 2);
3152 test("abcdefghij", 5, 2, "abcde", 6, 0, 0);
3153 test("abcdefghij", 5, 2, "abcdefghij", 0, 0, 2);
3154 test("abcdefghij", 5, 2, "abcdefghij", 0, 1, 5);
3155 test("abcdefghij", 5, 2, "abcdefghij", 0, 5, 5);
3156 test("abcdefghij", 5, 2, "abcdefghij", 0, 9, 5);
3157 test("abcdefghij", 5, 2, "abcdefghij", 0, 10, 5);
3158 test("abcdefghij", 5, 2, "abcdefghij", 0, 11, 5);
3159 test("abcdefghij", 5, 2, "abcdefghij", 1, 0, 2);
3160 test("abcdefghij", 5, 2, "abcdefghij", 1, 1, 4);
3161 test("abcdefghij", 5, 2, "abcdefghij", 1, 4, 4);
3162 test("abcdefghij", 5, 2, "abcdefghij", 1, 8, 4);
3163 test("abcdefghij", 5, 2, "abcdefghij", 1, 9, 4);
3164 test("abcdefghij", 5, 2, "abcdefghij", 1, 10, 4);
3165 test("abcdefghij", 5, 2, "abcdefghij", 5, 0, 2);
3166 test("abcdefghij", 5, 2, "abcdefghij", 5, 1, 1);
3167}
3168
3169void test30()
3170{
3171 test("abcdefghij", 5, 2, "abcdefghij", 5, 2, 0);
3172 test("abcdefghij", 5, 2, "abcdefghij", 5, 4, -2);
3173 test("abcdefghij", 5, 2, "abcdefghij", 5, 5, -3);
3174 test("abcdefghij", 5, 2, "abcdefghij", 5, 6, -3);
3175 test("abcdefghij", 5, 2, "abcdefghij", 9, 0, 2);
3176 test("abcdefghij", 5, 2, "abcdefghij", 9, 1, -4);
3177 test("abcdefghij", 5, 2, "abcdefghij", 9, 2, -4);
3178 test("abcdefghij", 5, 2, "abcdefghij", 10, 0, 2);
3179 test("abcdefghij", 5, 2, "abcdefghij", 10, 1, 2);
3180 test("abcdefghij", 5, 2, "abcdefghij", 11, 0, 0);
3181 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 0, 0, 2);
3182 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 0, 1, 5);
3183 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 0, 10, 5);
3184 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 0, 19, 5);
3185 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 0, 20, 5);
3186 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 0, 21, 5);
3187 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 1, 0, 2);
3188 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 1, 1, 4);
3189 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 1, 9, 4);
3190 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 1, 18, 4);
3191 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 1, 19, 4);
3192 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 1, 20, 4);
3193 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 10, 0, 2);
3194 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 10, 1, -5);
3195 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 10, 5, -5);
3196 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 10, 9, -5);
3197 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 10, 10, -5);
3198 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 10, 11, -5);
3199 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 19, 0, 2);
3200 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 19, 1, -14);
3201 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 19, 2, -14);
3202 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 20, 0, 2);
3203 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 20, 1, 2);
3204 test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 21, 0, 0);
3205 test("abcdefghij", 5, 4, "", 0, 0, 4);
3206 test("abcdefghij", 5, 4, "", 0, 1, 4);
3207 test("abcdefghij", 5, 4, "", 1, 0, 0);
3208 test("abcdefghij", 5, 4, "abcde", 0, 0, 4);
3209 test("abcdefghij", 5, 4, "abcde", 0, 1, 5);
3210 test("abcdefghij", 5, 4, "abcde", 0, 2, 5);
3211 test("abcdefghij", 5, 4, "abcde", 0, 4, 5);
3212 test("abcdefghij", 5, 4, "abcde", 0, 5, 5);
3213 test("abcdefghij", 5, 4, "abcde", 0, 6, 5);
3214 test("abcdefghij", 5, 4, "abcde", 1, 0, 4);
3215 test("abcdefghij", 5, 4, "abcde", 1, 1, 4);
3216 test("abcdefghij", 5, 4, "abcde", 1, 2, 4);
3217 test("abcdefghij", 5, 4, "abcde", 1, 3, 4);
3218 test("abcdefghij", 5, 4, "abcde", 1, 4, 4);
3219 test("abcdefghij", 5, 4, "abcde", 1, 5, 4);
3220 test("abcdefghij", 5, 4, "abcde", 2, 0, 4);
3221 test("abcdefghij", 5, 4, "abcde", 2, 1, 3);
3222 test("abcdefghij", 5, 4, "abcde", 2, 2, 3);
3223 test("abcdefghij", 5, 4, "abcde", 2, 3, 3);
3224 test("abcdefghij", 5, 4, "abcde", 2, 4, 3);
3225 test("abcdefghij", 5, 4, "abcde", 4, 0, 4);
3226 test("abcdefghij", 5, 4, "abcde", 4, 1, 1);
3227 test("abcdefghij", 5, 4, "abcde", 4, 2, 1);
3228 test("abcdefghij", 5, 4, "abcde", 5, 0, 4);
3229 test("abcdefghij", 5, 4, "abcde", 5, 1, 4);
3230 test("abcdefghij", 5, 4, "abcde", 6, 0, 0);
3231 test("abcdefghij", 5, 4, "abcdefghij", 0, 0, 4);
3232 test("abcdefghij", 5, 4, "abcdefghij", 0, 1, 5);
3233 test("abcdefghij", 5, 4, "abcdefghij", 0, 5, 5);
3234 test("abcdefghij", 5, 4, "abcdefghij", 0, 9, 5);
3235 test("abcdefghij", 5, 4, "abcdefghij", 0, 10, 5);
3236 test("abcdefghij", 5, 4, "abcdefghij", 0, 11, 5);
3237 test("abcdefghij", 5, 4, "abcdefghij", 1, 0, 4);
3238 test("abcdefghij", 5, 4, "abcdefghij", 1, 1, 4);
3239 test("abcdefghij", 5, 4, "abcdefghij", 1, 4, 4);
3240 test("abcdefghij", 5, 4, "abcdefghij", 1, 8, 4);
3241 test("abcdefghij", 5, 4, "abcdefghij", 1, 9, 4);
3242 test("abcdefghij", 5, 4, "abcdefghij", 1, 10, 4);
3243 test("abcdefghij", 5, 4, "abcdefghij", 5, 0, 4);
3244 test("abcdefghij", 5, 4, "abcdefghij", 5, 1, 3);
3245 test("abcdefghij", 5, 4, "abcdefghij", 5, 2, 2);
3246 test("abcdefghij", 5, 4, "abcdefghij", 5, 4, 0);
3247 test("abcdefghij", 5, 4, "abcdefghij", 5, 5, -1);
3248 test("abcdefghij", 5, 4, "abcdefghij", 5, 6, -1);
3249 test("abcdefghij", 5, 4, "abcdefghij", 9, 0, 4);
3250 test("abcdefghij", 5, 4, "abcdefghij", 9, 1, -4);
3251 test("abcdefghij", 5, 4, "abcdefghij", 9, 2, -4);
3252 test("abcdefghij", 5, 4, "abcdefghij", 10, 0, 4);
3253 test("abcdefghij", 5, 4, "abcdefghij", 10, 1, 4);
3254 test("abcdefghij", 5, 4, "abcdefghij", 11, 0, 0);
3255 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 0, 0, 4);
3256 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 0, 1, 5);
3257 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 0, 10, 5);
3258 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 0, 19, 5);
3259 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 0, 20, 5);
3260 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 0, 21, 5);
3261 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 1, 0, 4);
3262 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 1, 1, 4);
3263 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 1, 9, 4);
3264 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 1, 18, 4);
3265 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 1, 19, 4);
3266 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 1, 20, 4);
3267 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 10, 0, 4);
3268 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 10, 1, -5);
3269 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 10, 5, -5);
3270 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 10, 9, -5);
3271}
3272
3273void test31()
3274{
3275 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 10, 10, -5);
3276 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 10, 11, -5);
3277 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 19, 0, 4);
3278 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 19, 1, -14);
3279 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 19, 2, -14);
3280 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 20, 0, 4);
3281 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 20, 1, 4);
3282 test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 21, 0, 0);
3283 test("abcdefghij", 5, 5, "", 0, 0, 5);
3284 test("abcdefghij", 5, 5, "", 0, 1, 5);
3285 test("abcdefghij", 5, 5, "", 1, 0, 0);
3286 test("abcdefghij", 5, 5, "abcde", 0, 0, 5);
3287 test("abcdefghij", 5, 5, "abcde", 0, 1, 5);
3288 test("abcdefghij", 5, 5, "abcde", 0, 2, 5);
3289 test("abcdefghij", 5, 5, "abcde", 0, 4, 5);
3290 test("abcdefghij", 5, 5, "abcde", 0, 5, 5);
3291 test("abcdefghij", 5, 5, "abcde", 0, 6, 5);
3292 test("abcdefghij", 5, 5, "abcde", 1, 0, 5);
3293 test("abcdefghij", 5, 5, "abcde", 1, 1, 4);
3294 test("abcdefghij", 5, 5, "abcde", 1, 2, 4);
3295 test("abcdefghij", 5, 5, "abcde", 1, 3, 4);
3296 test("abcdefghij", 5, 5, "abcde", 1, 4, 4);
3297 test("abcdefghij", 5, 5, "abcde", 1, 5, 4);
3298 test("abcdefghij", 5, 5, "abcde", 2, 0, 5);
3299 test("abcdefghij", 5, 5, "abcde", 2, 1, 3);
3300 test("abcdefghij", 5, 5, "abcde", 2, 2, 3);
3301 test("abcdefghij", 5, 5, "abcde", 2, 3, 3);
3302 test("abcdefghij", 5, 5, "abcde", 2, 4, 3);
3303 test("abcdefghij", 5, 5, "abcde", 4, 0, 5);
3304 test("abcdefghij", 5, 5, "abcde", 4, 1, 1);
3305 test("abcdefghij", 5, 5, "abcde", 4, 2, 1);
3306 test("abcdefghij", 5, 5, "abcde", 5, 0, 5);
3307 test("abcdefghij", 5, 5, "abcde", 5, 1, 5);
3308 test("abcdefghij", 5, 5, "abcde", 6, 0, 0);
3309 test("abcdefghij", 5, 5, "abcdefghij", 0, 0, 5);
3310 test("abcdefghij", 5, 5, "abcdefghij", 0, 1, 5);
3311 test("abcdefghij", 5, 5, "abcdefghij", 0, 5, 5);
3312 test("abcdefghij", 5, 5, "abcdefghij", 0, 9, 5);
3313 test("abcdefghij", 5, 5, "abcdefghij", 0, 10, 5);
3314 test("abcdefghij", 5, 5, "abcdefghij", 0, 11, 5);
3315 test("abcdefghij", 5, 5, "abcdefghij", 1, 0, 5);
3316 test("abcdefghij", 5, 5, "abcdefghij", 1, 1, 4);
3317 test("abcdefghij", 5, 5, "abcdefghij", 1, 4, 4);
3318 test("abcdefghij", 5, 5, "abcdefghij", 1, 8, 4);
3319 test("abcdefghij", 5, 5, "abcdefghij", 1, 9, 4);
3320 test("abcdefghij", 5, 5, "abcdefghij", 1, 10, 4);
3321 test("abcdefghij", 5, 5, "abcdefghij", 5, 0, 5);
3322 test("abcdefghij", 5, 5, "abcdefghij", 5, 1, 4);
3323 test("abcdefghij", 5, 5, "abcdefghij", 5, 2, 3);
3324 test("abcdefghij", 5, 5, "abcdefghij", 5, 4, 1);
3325 test("abcdefghij", 5, 5, "abcdefghij", 5, 5, 0);
3326 test("abcdefghij", 5, 5, "abcdefghij", 5, 6, 0);
3327 test("abcdefghij", 5, 5, "abcdefghij", 9, 0, 5);
3328 test("abcdefghij", 5, 5, "abcdefghij", 9, 1, -4);
3329 test("abcdefghij", 5, 5, "abcdefghij", 9, 2, -4);
3330 test("abcdefghij", 5, 5, "abcdefghij", 10, 0, 5);
3331 test("abcdefghij", 5, 5, "abcdefghij", 10, 1, 5);
3332 test("abcdefghij", 5, 5, "abcdefghij", 11, 0, 0);
3333 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 0, 0, 5);
3334 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 0, 1, 5);
3335 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 0, 10, 5);
3336 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 0, 19, 5);
3337 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 0, 20, 5);
3338 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 0, 21, 5);
3339 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 1, 0, 5);
3340 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 1, 1, 4);
3341 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 1, 9, 4);
3342 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 1, 18, 4);
3343 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 1, 19, 4);
3344 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 1, 20, 4);
3345 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 10, 0, 5);
3346 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 10, 1, -5);
3347 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 10, 5, -5);
3348 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 10, 9, -5);
3349 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 10, 10, -5);
3350 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 10, 11, -5);
3351 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 19, 0, 5);
3352 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 19, 1, -14);
3353 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 19, 2, -14);
3354 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 20, 0, 5);
3355 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 20, 1, 5);
3356 test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 21, 0, 0);
3357 test("abcdefghij", 5, 6, "", 0, 0, 5);
3358 test("abcdefghij", 5, 6, "", 0, 1, 5);
3359 test("abcdefghij", 5, 6, "", 1, 0, 0);
3360 test("abcdefghij", 5, 6, "abcde", 0, 0, 5);
3361 test("abcdefghij", 5, 6, "abcde", 0, 1, 5);
3362 test("abcdefghij", 5, 6, "abcde", 0, 2, 5);
3363 test("abcdefghij", 5, 6, "abcde", 0, 4, 5);
3364 test("abcdefghij", 5, 6, "abcde", 0, 5, 5);
3365 test("abcdefghij", 5, 6, "abcde", 0, 6, 5);
3366 test("abcdefghij", 5, 6, "abcde", 1, 0, 5);
3367 test("abcdefghij", 5, 6, "abcde", 1, 1, 4);
3368 test("abcdefghij", 5, 6, "abcde", 1, 2, 4);
3369 test("abcdefghij", 5, 6, "abcde", 1, 3, 4);
3370 test("abcdefghij", 5, 6, "abcde", 1, 4, 4);
3371 test("abcdefghij", 5, 6, "abcde", 1, 5, 4);
3372 test("abcdefghij", 5, 6, "abcde", 2, 0, 5);
3373 test("abcdefghij", 5, 6, "abcde", 2, 1, 3);
3374 test("abcdefghij", 5, 6, "abcde", 2, 2, 3);
3375}
3376
3377void test32()
3378{
3379 test("abcdefghij", 5, 6, "abcde", 2, 3, 3);
3380 test("abcdefghij", 5, 6, "abcde", 2, 4, 3);
3381 test("abcdefghij", 5, 6, "abcde", 4, 0, 5);
3382 test("abcdefghij", 5, 6, "abcde", 4, 1, 1);
3383 test("abcdefghij", 5, 6, "abcde", 4, 2, 1);
3384 test("abcdefghij", 5, 6, "abcde", 5, 0, 5);
3385 test("abcdefghij", 5, 6, "abcde", 5, 1, 5);
3386 test("abcdefghij", 5, 6, "abcde", 6, 0, 0);
3387 test("abcdefghij", 5, 6, "abcdefghij", 0, 0, 5);
3388 test("abcdefghij", 5, 6, "abcdefghij", 0, 1, 5);
3389 test("abcdefghij", 5, 6, "abcdefghij", 0, 5, 5);
3390 test("abcdefghij", 5, 6, "abcdefghij", 0, 9, 5);
3391 test("abcdefghij", 5, 6, "abcdefghij", 0, 10, 5);
3392 test("abcdefghij", 5, 6, "abcdefghij", 0, 11, 5);
3393 test("abcdefghij", 5, 6, "abcdefghij", 1, 0, 5);
3394 test("abcdefghij", 5, 6, "abcdefghij", 1, 1, 4);
3395 test("abcdefghij", 5, 6, "abcdefghij", 1, 4, 4);
3396 test("abcdefghij", 5, 6, "abcdefghij", 1, 8, 4);
3397 test("abcdefghij", 5, 6, "abcdefghij", 1, 9, 4);
3398 test("abcdefghij", 5, 6, "abcdefghij", 1, 10, 4);
3399 test("abcdefghij", 5, 6, "abcdefghij", 5, 0, 5);
3400 test("abcdefghij", 5, 6, "abcdefghij", 5, 1, 4);
3401 test("abcdefghij", 5, 6, "abcdefghij", 5, 2, 3);
3402 test("abcdefghij", 5, 6, "abcdefghij", 5, 4, 1);
3403 test("abcdefghij", 5, 6, "abcdefghij", 5, 5, 0);
3404 test("abcdefghij", 5, 6, "abcdefghij", 5, 6, 0);
3405 test("abcdefghij", 5, 6, "abcdefghij", 9, 0, 5);
3406 test("abcdefghij", 5, 6, "abcdefghij", 9, 1, -4);
3407 test("abcdefghij", 5, 6, "abcdefghij", 9, 2, -4);
3408 test("abcdefghij", 5, 6, "abcdefghij", 10, 0, 5);
3409 test("abcdefghij", 5, 6, "abcdefghij", 10, 1, 5);
3410 test("abcdefghij", 5, 6, "abcdefghij", 11, 0, 0);
3411 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 0, 0, 5);
3412 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 0, 1, 5);
3413 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 0, 10, 5);
3414 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 0, 19, 5);
3415 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 0, 20, 5);
3416 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 0, 21, 5);
3417 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 1, 0, 5);
3418 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 1, 1, 4);
3419 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 1, 9, 4);
3420 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 1, 18, 4);
3421 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 1, 19, 4);
3422 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 1, 20, 4);
3423 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 10, 0, 5);
3424 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 10, 1, -5);
3425 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 10, 5, -5);
3426 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 10, 9, -5);
3427 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 10, 10, -5);
3428 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 10, 11, -5);
3429 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 19, 0, 5);
3430 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 19, 1, -14);
3431 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 19, 2, -14);
3432 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 20, 0, 5);
3433 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 20, 1, 5);
3434 test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 21, 0, 0);
3435 test("abcdefghij", 9, 0, "", 0, 0, 0);
3436 test("abcdefghij", 9, 0, "", 0, 1, 0);
3437 test("abcdefghij", 9, 0, "", 1, 0, 0);
3438 test("abcdefghij", 9, 0, "abcde", 0, 0, 0);
3439 test("abcdefghij", 9, 0, "abcde", 0, 1, -1);
3440 test("abcdefghij", 9, 0, "abcde", 0, 2, -2);
3441 test("abcdefghij", 9, 0, "abcde", 0, 4, -4);
3442 test("abcdefghij", 9, 0, "abcde", 0, 5, -5);
3443 test("abcdefghij", 9, 0, "abcde", 0, 6, -5);
3444 test("abcdefghij", 9, 0, "abcde", 1, 0, 0);
3445 test("abcdefghij", 9, 0, "abcde", 1, 1, -1);
3446 test("abcdefghij", 9, 0, "abcde", 1, 2, -2);
3447 test("abcdefghij", 9, 0, "abcde", 1, 3, -3);
3448 test("abcdefghij", 9, 0, "abcde", 1, 4, -4);
3449 test("abcdefghij", 9, 0, "abcde", 1, 5, -4);
3450 test("abcdefghij", 9, 0, "abcde", 2, 0, 0);
3451 test("abcdefghij", 9, 0, "abcde", 2, 1, -1);
3452 test("abcdefghij", 9, 0, "abcde", 2, 2, -2);
3453 test("abcdefghij", 9, 0, "abcde", 2, 3, -3);
3454 test("abcdefghij", 9, 0, "abcde", 2, 4, -3);
3455 test("abcdefghij", 9, 0, "abcde", 4, 0, 0);
3456 test("abcdefghij", 9, 0, "abcde", 4, 1, -1);
3457 test("abcdefghij", 9, 0, "abcde", 4, 2, -1);
3458 test("abcdefghij", 9, 0, "abcde", 5, 0, 0);
3459 test("abcdefghij", 9, 0, "abcde", 5, 1, 0);
3460 test("abcdefghij", 9, 0, "abcde", 6, 0, 0);
3461 test("abcdefghij", 9, 0, "abcdefghij", 0, 0, 0);
3462 test("abcdefghij", 9, 0, "abcdefghij", 0, 1, -1);
3463 test("abcdefghij", 9, 0, "abcdefghij", 0, 5, -5);
3464 test("abcdefghij", 9, 0, "abcdefghij", 0, 9, -9);
3465 test("abcdefghij", 9, 0, "abcdefghij", 0, 10, -10);
3466 test("abcdefghij", 9, 0, "abcdefghij", 0, 11, -10);
3467 test("abcdefghij", 9, 0, "abcdefghij", 1, 0, 0);
3468 test("abcdefghij", 9, 0, "abcdefghij", 1, 1, -1);
3469 test("abcdefghij", 9, 0, "abcdefghij", 1, 4, -4);
3470 test("abcdefghij", 9, 0, "abcdefghij", 1, 8, -8);
3471 test("abcdefghij", 9, 0, "abcdefghij", 1, 9, -9);
3472 test("abcdefghij", 9, 0, "abcdefghij", 1, 10, -9);
3473 test("abcdefghij", 9, 0, "abcdefghij", 5, 0, 0);
3474 test("abcdefghij", 9, 0, "abcdefghij", 5, 1, -1);
3475 test("abcdefghij", 9, 0, "abcdefghij", 5, 2, -2);
3476 test("abcdefghij", 9, 0, "abcdefghij", 5, 4, -4);
3477 test("abcdefghij", 9, 0, "abcdefghij", 5, 5, -5);
3478 test("abcdefghij", 9, 0, "abcdefghij", 5, 6, -5);
3479}
3480
3481void test33()
3482{
3483 test("abcdefghij", 9, 0, "abcdefghij", 9, 0, 0);
3484 test("abcdefghij", 9, 0, "abcdefghij", 9, 1, -1);
3485 test("abcdefghij", 9, 0, "abcdefghij", 9, 2, -1);
3486 test("abcdefghij", 9, 0, "abcdefghij", 10, 0, 0);
3487 test("abcdefghij", 9, 0, "abcdefghij", 10, 1, 0);
3488 test("abcdefghij", 9, 0, "abcdefghij", 11, 0, 0);
3489 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 0, 0, 0);
3490 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 0, 1, -1);
3491 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 0, 10, -10);
3492 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 0, 19, -19);
3493 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 0, 20, -20);
3494 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 0, 21, -20);
3495 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 1, 0, 0);
3496 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 1, 1, -1);
3497 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 1, 9, -9);
3498 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 1, 18, -18);
3499 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 1, 19, -19);
3500 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 1, 20, -19);
3501 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 10, 0, 0);
3502 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 10, 1, -1);
3503 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 10, 5, -5);
3504 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 10, 9, -9);
3505 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 10, 10, -10);
3506 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 10, 11, -10);
3507 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 19, 0, 0);
3508 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 19, 1, -1);
3509 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 19, 2, -1);
3510 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 20, 0, 0);
3511 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 20, 1, 0);
3512 test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 21, 0, 0);
3513 test("abcdefghij", 9, 1, "", 0, 0, 1);
3514 test("abcdefghij", 9, 1, "", 0, 1, 1);
3515 test("abcdefghij", 9, 1, "", 1, 0, 0);
3516 test("abcdefghij", 9, 1, "abcde", 0, 0, 1);
3517 test("abcdefghij", 9, 1, "abcde", 0, 1, 9);
3518 test("abcdefghij", 9, 1, "abcde", 0, 2, 9);
3519 test("abcdefghij", 9, 1, "abcde", 0, 4, 9);
3520 test("abcdefghij", 9, 1, "abcde", 0, 5, 9);
3521 test("abcdefghij", 9, 1, "abcde", 0, 6, 9);
3522 test("abcdefghij", 9, 1, "abcde", 1, 0, 1);
3523 test("abcdefghij", 9, 1, "abcde", 1, 1, 8);
3524 test("abcdefghij", 9, 1, "abcde", 1, 2, 8);
3525 test("abcdefghij", 9, 1, "abcde", 1, 3, 8);
3526 test("abcdefghij", 9, 1, "abcde", 1, 4, 8);
3527 test("abcdefghij", 9, 1, "abcde", 1, 5, 8);
3528 test("abcdefghij", 9, 1, "abcde", 2, 0, 1);
3529 test("abcdefghij", 9, 1, "abcde", 2, 1, 7);
3530 test("abcdefghij", 9, 1, "abcde", 2, 2, 7);
3531 test("abcdefghij", 9, 1, "abcde", 2, 3, 7);
3532 test("abcdefghij", 9, 1, "abcde", 2, 4, 7);
3533 test("abcdefghij", 9, 1, "abcde", 4, 0, 1);
3534 test("abcdefghij", 9, 1, "abcde", 4, 1, 5);
3535 test("abcdefghij", 9, 1, "abcde", 4, 2, 5);
3536 test("abcdefghij", 9, 1, "abcde", 5, 0, 1);
3537 test("abcdefghij", 9, 1, "abcde", 5, 1, 1);
3538 test("abcdefghij", 9, 1, "abcde", 6, 0, 0);
3539 test("abcdefghij", 9, 1, "abcdefghij", 0, 0, 1);
3540 test("abcdefghij", 9, 1, "abcdefghij", 0, 1, 9);
3541 test("abcdefghij", 9, 1, "abcdefghij", 0, 5, 9);
3542 test("abcdefghij", 9, 1, "abcdefghij", 0, 9, 9);
3543 test("abcdefghij", 9, 1, "abcdefghij", 0, 10, 9);
3544 test("abcdefghij", 9, 1, "abcdefghij", 0, 11, 9);
3545 test("abcdefghij", 9, 1, "abcdefghij", 1, 0, 1);
3546 test("abcdefghij", 9, 1, "abcdefghij", 1, 1, 8);
3547 test("abcdefghij", 9, 1, "abcdefghij", 1, 4, 8);
3548 test("abcdefghij", 9, 1, "abcdefghij", 1, 8, 8);
3549 test("abcdefghij", 9, 1, "abcdefghij", 1, 9, 8);
3550 test("abcdefghij", 9, 1, "abcdefghij", 1, 10, 8);
3551 test("abcdefghij", 9, 1, "abcdefghij", 5, 0, 1);
3552 test("abcdefghij", 9, 1, "abcdefghij", 5, 1, 4);
3553 test("abcdefghij", 9, 1, "abcdefghij", 5, 2, 4);
3554 test("abcdefghij", 9, 1, "abcdefghij", 5, 4, 4);
3555 test("abcdefghij", 9, 1, "abcdefghij", 5, 5, 4);
3556 test("abcdefghij", 9, 1, "abcdefghij", 5, 6, 4);
3557 test("abcdefghij", 9, 1, "abcdefghij", 9, 0, 1);
3558 test("abcdefghij", 9, 1, "abcdefghij", 9, 1, 0);
3559 test("abcdefghij", 9, 1, "abcdefghij", 9, 2, 0);
3560 test("abcdefghij", 9, 1, "abcdefghij", 10, 0, 1);
3561 test("abcdefghij", 9, 1, "abcdefghij", 10, 1, 1);
3562 test("abcdefghij", 9, 1, "abcdefghij", 11, 0, 0);
3563 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 0, 0, 1);
3564 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 0, 1, 9);
3565 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 0, 10, 9);
3566 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 0, 19, 9);
3567 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 0, 20, 9);
3568 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 0, 21, 9);
3569 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 1, 0, 1);
3570 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 1, 1, 8);
3571 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 1, 9, 8);
3572 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 1, 18, 8);
3573 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 1, 19, 8);
3574 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 1, 20, 8);
3575 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 10, 0, 1);
3576 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 10, 1, -1);
3577 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 10, 5, -1);
3578 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 10, 9, -1);
3579 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 10, 10, -1);
3580 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 10, 11, -1);
3581 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 19, 0, 1);
3582 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 19, 1, -10);
3583}
3584
3585void test34()
3586{
3587 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 19, 2, -10);
3588 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 20, 0, 1);
3589 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 20, 1, 1);
3590 test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 21, 0, 0);
3591 test("abcdefghij", 9, 2, "", 0, 0, 1);
3592 test("abcdefghij", 9, 2, "", 0, 1, 1);
3593 test("abcdefghij", 9, 2, "", 1, 0, 0);
3594 test("abcdefghij", 9, 2, "abcde", 0, 0, 1);
3595 test("abcdefghij", 9, 2, "abcde", 0, 1, 9);
3596 test("abcdefghij", 9, 2, "abcde", 0, 2, 9);
3597 test("abcdefghij", 9, 2, "abcde", 0, 4, 9);
3598 test("abcdefghij", 9, 2, "abcde", 0, 5, 9);
3599 test("abcdefghij", 9, 2, "abcde", 0, 6, 9);
3600 test("abcdefghij", 9, 2, "abcde", 1, 0, 1);
3601 test("abcdefghij", 9, 2, "abcde", 1, 1, 8);
3602 test("abcdefghij", 9, 2, "abcde", 1, 2, 8);
3603 test("abcdefghij", 9, 2, "abcde", 1, 3, 8);
3604 test("abcdefghij", 9, 2, "abcde", 1, 4, 8);
3605 test("abcdefghij", 9, 2, "abcde", 1, 5, 8);
3606 test("abcdefghij", 9, 2, "abcde", 2, 0, 1);
3607 test("abcdefghij", 9, 2, "abcde", 2, 1, 7);
3608 test("abcdefghij", 9, 2, "abcde", 2, 2, 7);
3609 test("abcdefghij", 9, 2, "abcde", 2, 3, 7);
3610 test("abcdefghij", 9, 2, "abcde", 2, 4, 7);
3611 test("abcdefghij", 9, 2, "abcde", 4, 0, 1);
3612 test("abcdefghij", 9, 2, "abcde", 4, 1, 5);
3613 test("abcdefghij", 9, 2, "abcde", 4, 2, 5);
3614 test("abcdefghij", 9, 2, "abcde", 5, 0, 1);
3615 test("abcdefghij", 9, 2, "abcde", 5, 1, 1);
3616 test("abcdefghij", 9, 2, "abcde", 6, 0, 0);
3617 test("abcdefghij", 9, 2, "abcdefghij", 0, 0, 1);
3618 test("abcdefghij", 9, 2, "abcdefghij", 0, 1, 9);
3619 test("abcdefghij", 9, 2, "abcdefghij", 0, 5, 9);
3620 test("abcdefghij", 9, 2, "abcdefghij", 0, 9, 9);
3621 test("abcdefghij", 9, 2, "abcdefghij", 0, 10, 9);
3622 test("abcdefghij", 9, 2, "abcdefghij", 0, 11, 9);
3623 test("abcdefghij", 9, 2, "abcdefghij", 1, 0, 1);
3624 test("abcdefghij", 9, 2, "abcdefghij", 1, 1, 8);
3625 test("abcdefghij", 9, 2, "abcdefghij", 1, 4, 8);
3626 test("abcdefghij", 9, 2, "abcdefghij", 1, 8, 8);
3627 test("abcdefghij", 9, 2, "abcdefghij", 1, 9, 8);
3628 test("abcdefghij", 9, 2, "abcdefghij", 1, 10, 8);
3629 test("abcdefghij", 9, 2, "abcdefghij", 5, 0, 1);
3630 test("abcdefghij", 9, 2, "abcdefghij", 5, 1, 4);
3631 test("abcdefghij", 9, 2, "abcdefghij", 5, 2, 4);
3632 test("abcdefghij", 9, 2, "abcdefghij", 5, 4, 4);
3633 test("abcdefghij", 9, 2, "abcdefghij", 5, 5, 4);
3634 test("abcdefghij", 9, 2, "abcdefghij", 5, 6, 4);
3635 test("abcdefghij", 9, 2, "abcdefghij", 9, 0, 1);
3636 test("abcdefghij", 9, 2, "abcdefghij", 9, 1, 0);
3637 test("abcdefghij", 9, 2, "abcdefghij", 9, 2, 0);
3638 test("abcdefghij", 9, 2, "abcdefghij", 10, 0, 1);
3639 test("abcdefghij", 9, 2, "abcdefghij", 10, 1, 1);
3640 test("abcdefghij", 9, 2, "abcdefghij", 11, 0, 0);
3641 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 0, 0, 1);
3642 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 0, 1, 9);
3643 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 0, 10, 9);
3644 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 0, 19, 9);
3645 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 0, 20, 9);
3646 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 0, 21, 9);
3647 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 1, 0, 1);
3648 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 1, 1, 8);
3649 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 1, 9, 8);
3650 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 1, 18, 8);
3651 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 1, 19, 8);
3652 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 1, 20, 8);
3653 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 10, 0, 1);
3654 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 10, 1, -1);
3655 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 10, 5, -1);
3656 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 10, 9, -1);
3657 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 10, 10, -1);
3658 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 10, 11, -1);
3659 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 19, 0, 1);
3660 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 19, 1, -10);
3661 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 19, 2, -10);
3662 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 20, 0, 1);
3663 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 20, 1, 1);
3664 test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 21, 0, 0);
3665 test("abcdefghij", 10, 0, "", 0, 0, 0);
3666 test("abcdefghij", 10, 0, "", 0, 1, 0);
3667 test("abcdefghij", 10, 0, "", 1, 0, 0);
3668 test("abcdefghij", 10, 0, "abcde", 0, 0, 0);
3669 test("abcdefghij", 10, 0, "abcde", 0, 1, -1);
3670 test("abcdefghij", 10, 0, "abcde", 0, 2, -2);
3671 test("abcdefghij", 10, 0, "abcde", 0, 4, -4);
3672 test("abcdefghij", 10, 0, "abcde", 0, 5, -5);
3673 test("abcdefghij", 10, 0, "abcde", 0, 6, -5);
3674 test("abcdefghij", 10, 0, "abcde", 1, 0, 0);
3675 test("abcdefghij", 10, 0, "abcde", 1, 1, -1);
3676 test("abcdefghij", 10, 0, "abcde", 1, 2, -2);
3677 test("abcdefghij", 10, 0, "abcde", 1, 3, -3);
3678 test("abcdefghij", 10, 0, "abcde", 1, 4, -4);
3679 test("abcdefghij", 10, 0, "abcde", 1, 5, -4);
3680 test("abcdefghij", 10, 0, "abcde", 2, 0, 0);
3681 test("abcdefghij", 10, 0, "abcde", 2, 1, -1);
3682 test("abcdefghij", 10, 0, "abcde", 2, 2, -2);
3683 test("abcdefghij", 10, 0, "abcde", 2, 3, -3);
3684 test("abcdefghij", 10, 0, "abcde", 2, 4, -3);
3685 test("abcdefghij", 10, 0, "abcde", 4, 0, 0);
3686 test("abcdefghij", 10, 0, "abcde", 4, 1, -1);
3687}
3688
3689void test35()
3690{
3691 test("abcdefghij", 10, 0, "abcde", 4, 2, -1);
3692 test("abcdefghij", 10, 0, "abcde", 5, 0, 0);
3693 test("abcdefghij", 10, 0, "abcde", 5, 1, 0);
3694 test("abcdefghij", 10, 0, "abcde", 6, 0, 0);
3695 test("abcdefghij", 10, 0, "abcdefghij", 0, 0, 0);
3696 test("abcdefghij", 10, 0, "abcdefghij", 0, 1, -1);
3697 test("abcdefghij", 10, 0, "abcdefghij", 0, 5, -5);
3698 test("abcdefghij", 10, 0, "abcdefghij", 0, 9, -9);
3699 test("abcdefghij", 10, 0, "abcdefghij", 0, 10, -10);
3700 test("abcdefghij", 10, 0, "abcdefghij", 0, 11, -10);
3701 test("abcdefghij", 10, 0, "abcdefghij", 1, 0, 0);
3702 test("abcdefghij", 10, 0, "abcdefghij", 1, 1, -1);
3703 test("abcdefghij", 10, 0, "abcdefghij", 1, 4, -4);
3704 test("abcdefghij", 10, 0, "abcdefghij", 1, 8, -8);
3705 test("abcdefghij", 10, 0, "abcdefghij", 1, 9, -9);
3706 test("abcdefghij", 10, 0, "abcdefghij", 1, 10, -9);
3707 test("abcdefghij", 10, 0, "abcdefghij", 5, 0, 0);
3708 test("abcdefghij", 10, 0, "abcdefghij", 5, 1, -1);
3709 test("abcdefghij", 10, 0, "abcdefghij", 5, 2, -2);
3710 test("abcdefghij", 10, 0, "abcdefghij", 5, 4, -4);
3711 test("abcdefghij", 10, 0, "abcdefghij", 5, 5, -5);
3712 test("abcdefghij", 10, 0, "abcdefghij", 5, 6, -5);
3713 test("abcdefghij", 10, 0, "abcdefghij", 9, 0, 0);
3714 test("abcdefghij", 10, 0, "abcdefghij", 9, 1, -1);
3715 test("abcdefghij", 10, 0, "abcdefghij", 9, 2, -1);
3716 test("abcdefghij", 10, 0, "abcdefghij", 10, 0, 0);
3717 test("abcdefghij", 10, 0, "abcdefghij", 10, 1, 0);
3718 test("abcdefghij", 10, 0, "abcdefghij", 11, 0, 0);
3719 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 0, 0, 0);
3720 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 0, 1, -1);
3721 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 0, 10, -10);
3722 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 0, 19, -19);
3723 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 0, 20, -20);
3724 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 0, 21, -20);
3725 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 1, 0, 0);
3726 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 1, 1, -1);
3727 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 1, 9, -9);
3728 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 1, 18, -18);
3729 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 1, 19, -19);
3730 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 1, 20, -19);
3731 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 10, 0, 0);
3732 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 10, 1, -1);
3733 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 10, 5, -5);
3734 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 10, 9, -9);
3735 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 10, 10, -10);
3736 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 10, 11, -10);
3737 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 19, 0, 0);
3738 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 19, 1, -1);
3739 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 19, 2, -1);
3740 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 20, 0, 0);
3741 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 20, 1, 0);
3742 test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 21, 0, 0);
3743 test("abcdefghij", 10, 1, "", 0, 0, 0);
3744 test("abcdefghij", 10, 1, "", 0, 1, 0);
3745 test("abcdefghij", 10, 1, "", 1, 0, 0);
3746 test("abcdefghij", 10, 1, "abcde", 0, 0, 0);
3747 test("abcdefghij", 10, 1, "abcde", 0, 1, -1);
3748 test("abcdefghij", 10, 1, "abcde", 0, 2, -2);
3749 test("abcdefghij", 10, 1, "abcde", 0, 4, -4);
3750 test("abcdefghij", 10, 1, "abcde", 0, 5, -5);
3751 test("abcdefghij", 10, 1, "abcde", 0, 6, -5);
3752 test("abcdefghij", 10, 1, "abcde", 1, 0, 0);
3753 test("abcdefghij", 10, 1, "abcde", 1, 1, -1);
3754 test("abcdefghij", 10, 1, "abcde", 1, 2, -2);
3755 test("abcdefghij", 10, 1, "abcde", 1, 3, -3);
3756 test("abcdefghij", 10, 1, "abcde", 1, 4, -4);
3757 test("abcdefghij", 10, 1, "abcde", 1, 5, -4);
3758 test("abcdefghij", 10, 1, "abcde", 2, 0, 0);
3759 test("abcdefghij", 10, 1, "abcde", 2, 1, -1);
3760 test("abcdefghij", 10, 1, "abcde", 2, 2, -2);
3761 test("abcdefghij", 10, 1, "abcde", 2, 3, -3);
3762 test("abcdefghij", 10, 1, "abcde", 2, 4, -3);
3763 test("abcdefghij", 10, 1, "abcde", 4, 0, 0);
3764 test("abcdefghij", 10, 1, "abcde", 4, 1, -1);
3765 test("abcdefghij", 10, 1, "abcde", 4, 2, -1);
3766 test("abcdefghij", 10, 1, "abcde", 5, 0, 0);
3767 test("abcdefghij", 10, 1, "abcde", 5, 1, 0);
3768 test("abcdefghij", 10, 1, "abcde", 6, 0, 0);
3769 test("abcdefghij", 10, 1, "abcdefghij", 0, 0, 0);
3770 test("abcdefghij", 10, 1, "abcdefghij", 0, 1, -1);
3771 test("abcdefghij", 10, 1, "abcdefghij", 0, 5, -5);
3772 test("abcdefghij", 10, 1, "abcdefghij", 0, 9, -9);
3773 test("abcdefghij", 10, 1, "abcdefghij", 0, 10, -10);
3774 test("abcdefghij", 10, 1, "abcdefghij", 0, 11, -10);
3775 test("abcdefghij", 10, 1, "abcdefghij", 1, 0, 0);
3776 test("abcdefghij", 10, 1, "abcdefghij", 1, 1, -1);
3777 test("abcdefghij", 10, 1, "abcdefghij", 1, 4, -4);
3778 test("abcdefghij", 10, 1, "abcdefghij", 1, 8, -8);
3779 test("abcdefghij", 10, 1, "abcdefghij", 1, 9, -9);
3780 test("abcdefghij", 10, 1, "abcdefghij", 1, 10, -9);
3781 test("abcdefghij", 10, 1, "abcdefghij", 5, 0, 0);
3782 test("abcdefghij", 10, 1, "abcdefghij", 5, 1, -1);
3783 test("abcdefghij", 10, 1, "abcdefghij", 5, 2, -2);
3784 test("abcdefghij", 10, 1, "abcdefghij", 5, 4, -4);
3785 test("abcdefghij", 10, 1, "abcdefghij", 5, 5, -5);
3786 test("abcdefghij", 10, 1, "abcdefghij", 5, 6, -5);
3787 test("abcdefghij", 10, 1, "abcdefghij", 9, 0, 0);
3788 test("abcdefghij", 10, 1, "abcdefghij", 9, 1, -1);
3789 test("abcdefghij", 10, 1, "abcdefghij", 9, 2, -1);
3790 test("abcdefghij", 10, 1, "abcdefghij", 10, 0, 0);
3791}
3792
3793void test36()
3794{
3795 test("abcdefghij", 10, 1, "abcdefghij", 10, 1, 0);
3796 test("abcdefghij", 10, 1, "abcdefghij", 11, 0, 0);
3797 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 0, 0, 0);
3798 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 0, 1, -1);
3799 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 0, 10, -10);
3800 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 0, 19, -19);
3801 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 0, 20, -20);
3802 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 0, 21, -20);
3803 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 1, 0, 0);
3804 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 1, 1, -1);
3805 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 1, 9, -9);
3806 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 1, 18, -18);
3807 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 1, 19, -19);
3808 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 1, 20, -19);
3809 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 10, 0, 0);
3810 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 10, 1, -1);
3811 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 10, 5, -5);
3812 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 10, 9, -9);
3813 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 10, 10, -10);
3814 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 10, 11, -10);
3815 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 19, 0, 0);
3816 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 19, 1, -1);
3817 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 19, 2, -1);
3818 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 20, 0, 0);
3819 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 20, 1, 0);
3820 test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 21, 0, 0);
3821 test("abcdefghij", 11, 0, "", 0, 0, 0);
3822 test("abcdefghij", 11, 0, "", 0, 1, 0);
3823 test("abcdefghij", 11, 0, "", 1, 0, 0);
3824 test("abcdefghij", 11, 0, "abcde", 0, 0, 0);
3825 test("abcdefghij", 11, 0, "abcde", 0, 1, 0);
3826 test("abcdefghij", 11, 0, "abcde", 0, 2, 0);
3827 test("abcdefghij", 11, 0, "abcde", 0, 4, 0);
3828 test("abcdefghij", 11, 0, "abcde", 0, 5, 0);
3829 test("abcdefghij", 11, 0, "abcde", 0, 6, 0);
3830 test("abcdefghij", 11, 0, "abcde", 1, 0, 0);
3831 test("abcdefghij", 11, 0, "abcde", 1, 1, 0);
3832 test("abcdefghij", 11, 0, "abcde", 1, 2, 0);
3833 test("abcdefghij", 11, 0, "abcde", 1, 3, 0);
3834 test("abcdefghij", 11, 0, "abcde", 1, 4, 0);
3835 test("abcdefghij", 11, 0, "abcde", 1, 5, 0);
3836 test("abcdefghij", 11, 0, "abcde", 2, 0, 0);
3837 test("abcdefghij", 11, 0, "abcde", 2, 1, 0);
3838 test("abcdefghij", 11, 0, "abcde", 2, 2, 0);
3839 test("abcdefghij", 11, 0, "abcde", 2, 3, 0);
3840 test("abcdefghij", 11, 0, "abcde", 2, 4, 0);
3841 test("abcdefghij", 11, 0, "abcde", 4, 0, 0);
3842 test("abcdefghij", 11, 0, "abcde", 4, 1, 0);
3843 test("abcdefghij", 11, 0, "abcde", 4, 2, 0);
3844 test("abcdefghij", 11, 0, "abcde", 5, 0, 0);
3845 test("abcdefghij", 11, 0, "abcde", 5, 1, 0);
3846 test("abcdefghij", 11, 0, "abcde", 6, 0, 0);
3847 test("abcdefghij", 11, 0, "abcdefghij", 0, 0, 0);
3848 test("abcdefghij", 11, 0, "abcdefghij", 0, 1, 0);
3849 test("abcdefghij", 11, 0, "abcdefghij", 0, 5, 0);
3850 test("abcdefghij", 11, 0, "abcdefghij", 0, 9, 0);
3851 test("abcdefghij", 11, 0, "abcdefghij", 0, 10, 0);
3852 test("abcdefghij", 11, 0, "abcdefghij", 0, 11, 0);
3853 test("abcdefghij", 11, 0, "abcdefghij", 1, 0, 0);
3854 test("abcdefghij", 11, 0, "abcdefghij", 1, 1, 0);
3855 test("abcdefghij", 11, 0, "abcdefghij", 1, 4, 0);
3856 test("abcdefghij", 11, 0, "abcdefghij", 1, 8, 0);
3857 test("abcdefghij", 11, 0, "abcdefghij", 1, 9, 0);
3858 test("abcdefghij", 11, 0, "abcdefghij", 1, 10, 0);
3859 test("abcdefghij", 11, 0, "abcdefghij", 5, 0, 0);
3860 test("abcdefghij", 11, 0, "abcdefghij", 5, 1, 0);
3861 test("abcdefghij", 11, 0, "abcdefghij", 5, 2, 0);
3862 test("abcdefghij", 11, 0, "abcdefghij", 5, 4, 0);
3863 test("abcdefghij", 11, 0, "abcdefghij", 5, 5, 0);
3864 test("abcdefghij", 11, 0, "abcdefghij", 5, 6, 0);
3865 test("abcdefghij", 11, 0, "abcdefghij", 9, 0, 0);
3866 test("abcdefghij", 11, 0, "abcdefghij", 9, 1, 0);
3867 test("abcdefghij", 11, 0, "abcdefghij", 9, 2, 0);
3868 test("abcdefghij", 11, 0, "abcdefghij", 10, 0, 0);
3869 test("abcdefghij", 11, 0, "abcdefghij", 10, 1, 0);
3870 test("abcdefghij", 11, 0, "abcdefghij", 11, 0, 0);
3871 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0, 0, 0);
3872 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0, 1, 0);
3873 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0, 10, 0);
3874 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0, 19, 0);
3875 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0, 20, 0);
3876 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0, 21, 0);
3877 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 1, 0, 0);
3878 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 1, 1, 0);
3879 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 1, 9, 0);
3880 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 1, 18, 0);
3881 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 1, 19, 0);
3882 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 1, 20, 0);
3883 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 10, 0, 0);
3884 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 10, 1, 0);
3885 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 10, 5, 0);
3886 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 10, 9, 0);
3887 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 10, 10, 0);
3888 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 10, 11, 0);
3889 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 19, 0, 0);
3890 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 19, 1, 0);
3891 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 19, 2, 0);
3892 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 20, 0, 0);
3893 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 20, 1, 0);
3894 test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 21, 0, 0);
3895}
3896
3897void test37()
3898{
3899 test("abcdefghijklmnopqrst", 0, 0, "", 0, 0, 0);
3900 test("abcdefghijklmnopqrst", 0, 0, "", 0, 1, 0);
3901 test("abcdefghijklmnopqrst", 0, 0, "", 1, 0, 0);
3902 test("abcdefghijklmnopqrst", 0, 0, "abcde", 0, 0, 0);
3903 test("abcdefghijklmnopqrst", 0, 0, "abcde", 0, 1, -1);
3904 test("abcdefghijklmnopqrst", 0, 0, "abcde", 0, 2, -2);
3905 test("abcdefghijklmnopqrst", 0, 0, "abcde", 0, 4, -4);
3906 test("abcdefghijklmnopqrst", 0, 0, "abcde", 0, 5, -5);
3907 test("abcdefghijklmnopqrst", 0, 0, "abcde", 0, 6, -5);
3908 test("abcdefghijklmnopqrst", 0, 0, "abcde", 1, 0, 0);
3909 test("abcdefghijklmnopqrst", 0, 0, "abcde", 1, 1, -1);
3910 test("abcdefghijklmnopqrst", 0, 0, "abcde", 1, 2, -2);
3911 test("abcdefghijklmnopqrst", 0, 0, "abcde", 1, 3, -3);
3912 test("abcdefghijklmnopqrst", 0, 0, "abcde", 1, 4, -4);
3913 test("abcdefghijklmnopqrst", 0, 0, "abcde", 1, 5, -4);
3914 test("abcdefghijklmnopqrst", 0, 0, "abcde", 2, 0, 0);
3915 test("abcdefghijklmnopqrst", 0, 0, "abcde", 2, 1, -1);
3916 test("abcdefghijklmnopqrst", 0, 0, "abcde", 2, 2, -2);
3917 test("abcdefghijklmnopqrst", 0, 0, "abcde", 2, 3, -3);
3918 test("abcdefghijklmnopqrst", 0, 0, "abcde", 2, 4, -3);
3919 test("abcdefghijklmnopqrst", 0, 0, "abcde", 4, 0, 0);
3920 test("abcdefghijklmnopqrst", 0, 0, "abcde", 4, 1, -1);
3921 test("abcdefghijklmnopqrst", 0, 0, "abcde", 4, 2, -1);
3922 test("abcdefghijklmnopqrst", 0, 0, "abcde", 5, 0, 0);
3923 test("abcdefghijklmnopqrst", 0, 0, "abcde", 5, 1, 0);
3924 test("abcdefghijklmnopqrst", 0, 0, "abcde", 6, 0, 0);
3925 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 0, 0, 0);
3926 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 0, 1, -1);
3927 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 0, 5, -5);
3928 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 0, 9, -9);
3929 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 0, 10, -10);
3930 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 0, 11, -10);
3931 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 1, 0, 0);
3932 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 1, 1, -1);
3933 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 1, 4, -4);
3934 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 1, 8, -8);
3935 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 1, 9, -9);
3936 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 1, 10, -9);
3937 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 5, 0, 0);
3938 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 5, 1, -1);
3939 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 5, 2, -2);
3940 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 5, 4, -4);
3941 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 5, 5, -5);
3942 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 5, 6, -5);
3943 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 9, 0, 0);
3944 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 9, 1, -1);
3945 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 9, 2, -1);
3946 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 10, 0, 0);
3947 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 10, 1, 0);
3948 test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 11, 0, 0);
3949 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 0, 0, 0);
3950 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 0, 1, -1);
3951 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 0, 10, -10);
3952 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 0, 19, -19);
3953 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 0, 20, -20);
3954 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 0, 21, -20);
3955 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 1, 0, 0);
3956 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 1, 1, -1);
3957 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 1, 9, -9);
3958 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 1, 18, -18);
3959 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 1, 19, -19);
3960 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 1, 20, -19);
3961 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 10, 0, 0);
3962 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 10, 1, -1);
3963 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 10, 5, -5);
3964 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 10, 9, -9);
3965 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 10, 10, -10);
3966 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 10, 11, -10);
3967 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 19, 0, 0);
3968 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 19, 1, -1);
3969 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 19, 2, -1);
3970 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 20, 0, 0);
3971 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 20, 1, 0);
3972 test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 21, 0, 0);
3973 test("abcdefghijklmnopqrst", 0, 1, "", 0, 0, 1);
3974 test("abcdefghijklmnopqrst", 0, 1, "", 0, 1, 1);
3975 test("abcdefghijklmnopqrst", 0, 1, "", 1, 0, 0);
3976 test("abcdefghijklmnopqrst", 0, 1, "abcde", 0, 0, 1);
3977 test("abcdefghijklmnopqrst", 0, 1, "abcde", 0, 1, 0);
3978 test("abcdefghijklmnopqrst", 0, 1, "abcde", 0, 2, -1);
3979 test("abcdefghijklmnopqrst", 0, 1, "abcde", 0, 4, -3);
3980 test("abcdefghijklmnopqrst", 0, 1, "abcde", 0, 5, -4);
3981 test("abcdefghijklmnopqrst", 0, 1, "abcde", 0, 6, -4);
3982 test("abcdefghijklmnopqrst", 0, 1, "abcde", 1, 0, 1);
3983 test("abcdefghijklmnopqrst", 0, 1, "abcde", 1, 1, -1);
3984 test("abcdefghijklmnopqrst", 0, 1, "abcde", 1, 2, -1);
3985 test("abcdefghijklmnopqrst", 0, 1, "abcde", 1, 3, -1);
3986 test("abcdefghijklmnopqrst", 0, 1, "abcde", 1, 4, -1);
3987 test("abcdefghijklmnopqrst", 0, 1, "abcde", 1, 5, -1);
3988 test("abcdefghijklmnopqrst", 0, 1, "abcde", 2, 0, 1);
3989 test("abcdefghijklmnopqrst", 0, 1, "abcde", 2, 1, -2);
3990 test("abcdefghijklmnopqrst", 0, 1, "abcde", 2, 2, -2);
3991 test("abcdefghijklmnopqrst", 0, 1, "abcde", 2, 3, -2);
3992 test("abcdefghijklmnopqrst", 0, 1, "abcde", 2, 4, -2);
3993 test("abcdefghijklmnopqrst", 0, 1, "abcde", 4, 0, 1);
3994 test("abcdefghijklmnopqrst", 0, 1, "abcde", 4, 1, -4);
3995 test("abcdefghijklmnopqrst", 0, 1, "abcde", 4, 2, -4);
3996 test("abcdefghijklmnopqrst", 0, 1, "abcde", 5, 0, 1);
3997 test("abcdefghijklmnopqrst", 0, 1, "abcde", 5, 1, 1);
3998 test("abcdefghijklmnopqrst", 0, 1, "abcde", 6, 0, 0);
3999}
4000
4001void test38()
4002{
4003 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 0, 0, 1);
4004 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 0, 1, 0);
4005 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 0, 5, -4);
4006 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 0, 9, -8);
4007 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 0, 10, -9);
4008 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 0, 11, -9);
4009 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 1, 0, 1);
4010 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 1, 1, -1);
4011 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 1, 4, -1);
4012 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 1, 8, -1);
4013 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 1, 9, -1);
4014 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 1, 10, -1);
4015 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 5, 0, 1);
4016 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 5, 1, -5);
4017 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 5, 2, -5);
4018 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 5, 4, -5);
4019 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 5, 5, -5);
4020 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 5, 6, -5);
4021 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 9, 0, 1);
4022 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 9, 1, -9);
4023 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 9, 2, -9);
4024 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 10, 0, 1);
4025 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 10, 1, 1);
4026 test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 11, 0, 0);
4027 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 0, 0, 1);
4028 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 0, 1, 0);
4029 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 0, 10, -9);
4030 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 0, 19, -18);
4031 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 0, 20, -19);
4032 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 0, 21, -19);
4033 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 1, 0, 1);
4034 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 1, 1, -1);
4035 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 1, 9, -1);
4036 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 1, 18, -1);
4037 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 1, 19, -1);
4038 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 1, 20, -1);
4039 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 10, 0, 1);
4040 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 10, 1, -10);
4041 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 10, 5, -10);
4042 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 10, 9, -10);
4043 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 10, 10, -10);
4044 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 10, 11, -10);
4045 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 19, 0, 1);
4046 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 19, 1, -19);
4047 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 19, 2, -19);
4048 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 20, 0, 1);
4049 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 20, 1, 1);
4050 test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 21, 0, 0);
4051 test("abcdefghijklmnopqrst", 0, 10, "", 0, 0, 10);
4052 test("abcdefghijklmnopqrst", 0, 10, "", 0, 1, 10);
4053 test("abcdefghijklmnopqrst", 0, 10, "", 1, 0, 0);
4054 test("abcdefghijklmnopqrst", 0, 10, "abcde", 0, 0, 10);
4055 test("abcdefghijklmnopqrst", 0, 10, "abcde", 0, 1, 9);
4056 test("abcdefghijklmnopqrst", 0, 10, "abcde", 0, 2, 8);
4057 test("abcdefghijklmnopqrst", 0, 10, "abcde", 0, 4, 6);
4058 test("abcdefghijklmnopqrst", 0, 10, "abcde", 0, 5, 5);
4059 test("abcdefghijklmnopqrst", 0, 10, "abcde", 0, 6, 5);
4060 test("abcdefghijklmnopqrst", 0, 10, "abcde", 1, 0, 10);
4061 test("abcdefghijklmnopqrst", 0, 10, "abcde", 1, 1, -1);
4062 test("abcdefghijklmnopqrst", 0, 10, "abcde", 1, 2, -1);
4063 test("abcdefghijklmnopqrst", 0, 10, "abcde", 1, 3, -1);
4064 test("abcdefghijklmnopqrst", 0, 10, "abcde", 1, 4, -1);
4065 test("abcdefghijklmnopqrst", 0, 10, "abcde", 1, 5, -1);
4066 test("abcdefghijklmnopqrst", 0, 10, "abcde", 2, 0, 10);
4067 test("abcdefghijklmnopqrst", 0, 10, "abcde", 2, 1, -2);
4068 test("abcdefghijklmnopqrst", 0, 10, "abcde", 2, 2, -2);
4069 test("abcdefghijklmnopqrst", 0, 10, "abcde", 2, 3, -2);
4070 test("abcdefghijklmnopqrst", 0, 10, "abcde", 2, 4, -2);
4071 test("abcdefghijklmnopqrst", 0, 10, "abcde", 4, 0, 10);
4072 test("abcdefghijklmnopqrst", 0, 10, "abcde", 4, 1, -4);
4073 test("abcdefghijklmnopqrst", 0, 10, "abcde", 4, 2, -4);
4074 test("abcdefghijklmnopqrst", 0, 10, "abcde", 5, 0, 10);
4075 test("abcdefghijklmnopqrst", 0, 10, "abcde", 5, 1, 10);
4076 test("abcdefghijklmnopqrst", 0, 10, "abcde", 6, 0, 0);
4077 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0, 0, 10);
4078 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0, 1, 9);
4079 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0, 5, 5);
4080 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0, 9, 1);
4081 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0, 10, 0);
4082 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0, 11, 0);
4083 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 1, 0, 10);
4084 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 1, 1, -1);
4085 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 1, 4, -1);
4086 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 1, 8, -1);
4087 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 1, 9, -1);
4088 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 1, 10, -1);
4089 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 5, 0, 10);
4090 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 5, 1, -5);
4091 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 5, 2, -5);
4092 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 5, 4, -5);
4093 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 5, 5, -5);
4094 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 5, 6, -5);
4095 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 9, 0, 10);
4096 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 9, 1, -9);
4097 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 9, 2, -9);
4098 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 10, 0, 10);
4099 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 10, 1, 10);
4100 test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 11, 0, 0);
4101 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 0, 0, 10);
4102 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 0, 1, 9);
4103}
4104
4105void test39()
4106{
4107 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 0, 10, 0);
4108 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 0, 19, -9);
4109 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 0, 20, -10);
4110 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 0, 21, -10);
4111 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 1, 0, 10);
4112 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 1, 1, -1);
4113 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 1, 9, -1);
4114 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 1, 18, -1);
4115 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 1, 19, -1);
4116 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 1, 20, -1);
4117 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 10, 0, 10);
4118 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 10, 1, -10);
4119 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 10, 5, -10);
4120 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 10, 9, -10);
4121 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 10, 10, -10);
4122 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 10, 11, -10);
4123 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 19, 0, 10);
4124 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 19, 1, -19);
4125 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 19, 2, -19);
4126 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 20, 0, 10);
4127 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 20, 1, 10);
4128 test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 21, 0, 0);
4129 test("abcdefghijklmnopqrst", 0, 19, "", 0, 0, 19);
4130 test("abcdefghijklmnopqrst", 0, 19, "", 0, 1, 19);
4131 test("abcdefghijklmnopqrst", 0, 19, "", 1, 0, 0);
4132 test("abcdefghijklmnopqrst", 0, 19, "abcde", 0, 0, 19);
4133 test("abcdefghijklmnopqrst", 0, 19, "abcde", 0, 1, 18);
4134 test("abcdefghijklmnopqrst", 0, 19, "abcde", 0, 2, 17);
4135 test("abcdefghijklmnopqrst", 0, 19, "abcde", 0, 4, 15);
4136 test("abcdefghijklmnopqrst", 0, 19, "abcde", 0, 5, 14);
4137 test("abcdefghijklmnopqrst", 0, 19, "abcde", 0, 6, 14);
4138 test("abcdefghijklmnopqrst", 0, 19, "abcde", 1, 0, 19);
4139 test("abcdefghijklmnopqrst", 0, 19, "abcde", 1, 1, -1);
4140 test("abcdefghijklmnopqrst", 0, 19, "abcde", 1, 2, -1);
4141 test("abcdefghijklmnopqrst", 0, 19, "abcde", 1, 3, -1);
4142 test("abcdefghijklmnopqrst", 0, 19, "abcde", 1, 4, -1);
4143 test("abcdefghijklmnopqrst", 0, 19, "abcde", 1, 5, -1);
4144 test("abcdefghijklmnopqrst", 0, 19, "abcde", 2, 0, 19);
4145 test("abcdefghijklmnopqrst", 0, 19, "abcde", 2, 1, -2);
4146 test("abcdefghijklmnopqrst", 0, 19, "abcde", 2, 2, -2);
4147 test("abcdefghijklmnopqrst", 0, 19, "abcde", 2, 3, -2);
4148 test("abcdefghijklmnopqrst", 0, 19, "abcde", 2, 4, -2);
4149 test("abcdefghijklmnopqrst", 0, 19, "abcde", 4, 0, 19);
4150 test("abcdefghijklmnopqrst", 0, 19, "abcde", 4, 1, -4);
4151 test("abcdefghijklmnopqrst", 0, 19, "abcde", 4, 2, -4);
4152 test("abcdefghijklmnopqrst", 0, 19, "abcde", 5, 0, 19);
4153 test("abcdefghijklmnopqrst", 0, 19, "abcde", 5, 1, 19);
4154 test("abcdefghijklmnopqrst", 0, 19, "abcde", 6, 0, 0);
4155 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 0, 0, 19);
4156 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 0, 1, 18);
4157 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 0, 5, 14);
4158 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 0, 9, 10);
4159 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 0, 10, 9);
4160 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 0, 11, 9);
4161 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 1, 0, 19);
4162 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 1, 1, -1);
4163 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 1, 4, -1);
4164 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 1, 8, -1);
4165 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 1, 9, -1);
4166 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 1, 10, -1);
4167 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 5, 0, 19);
4168 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 5, 1, -5);
4169 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 5, 2, -5);
4170 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 5, 4, -5);
4171 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 5, 5, -5);
4172 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 5, 6, -5);
4173 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 9, 0, 19);
4174 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 9, 1, -9);
4175 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 9, 2, -9);
4176 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 10, 0, 19);
4177 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 10, 1, 19);
4178 test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 11, 0, 0);
4179 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 0, 0, 19);
4180 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 0, 1, 18);
4181 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 0, 10, 9);
4182 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 0, 19, 0);
4183 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 0, 20, -1);
4184 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 0, 21, -1);
4185 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 1, 0, 19);
4186 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 1, 1, -1);
4187 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 1, 9, -1);
4188 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 1, 18, -1);
4189 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 1, 19, -1);
4190 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 1, 20, -1);
4191 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 10, 0, 19);
4192 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 10, 1, -10);
4193 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 10, 5, -10);
4194 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 10, 9, -10);
4195 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 10, 10, -10);
4196 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 10, 11, -10);
4197 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 19, 0, 19);
4198 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 19, 1, -19);
4199 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 19, 2, -19);
4200 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 20, 0, 19);
4201 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 20, 1, 19);
4202 test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 21, 0, 0);
4203 test("abcdefghijklmnopqrst", 0, 20, "", 0, 0, 20);
4204 test("abcdefghijklmnopqrst", 0, 20, "", 0, 1, 20);
4205 test("abcdefghijklmnopqrst", 0, 20, "", 1, 0, 0);
4206 test("abcdefghijklmnopqrst", 0, 20, "abcde", 0, 0, 20);
4207}
4208
4209void test40()
4210{
4211 test("abcdefghijklmnopqrst", 0, 20, "abcde", 0, 1, 19);
4212 test("abcdefghijklmnopqrst", 0, 20, "abcde", 0, 2, 18);
4213 test("abcdefghijklmnopqrst", 0, 20, "abcde", 0, 4, 16);
4214 test("abcdefghijklmnopqrst", 0, 20, "abcde", 0, 5, 15);
4215 test("abcdefghijklmnopqrst", 0, 20, "abcde", 0, 6, 15);
4216 test("abcdefghijklmnopqrst", 0, 20, "abcde", 1, 0, 20);
4217 test("abcdefghijklmnopqrst", 0, 20, "abcde", 1, 1, -1);
4218 test("abcdefghijklmnopqrst", 0, 20, "abcde", 1, 2, -1);
4219 test("abcdefghijklmnopqrst", 0, 20, "abcde", 1, 3, -1);
4220 test("abcdefghijklmnopqrst", 0, 20, "abcde", 1, 4, -1);
4221 test("abcdefghijklmnopqrst", 0, 20, "abcde", 1, 5, -1);
4222 test("abcdefghijklmnopqrst", 0, 20, "abcde", 2, 0, 20);
4223 test("abcdefghijklmnopqrst", 0, 20, "abcde", 2, 1, -2);
4224 test("abcdefghijklmnopqrst", 0, 20, "abcde", 2, 2, -2);
4225 test("abcdefghijklmnopqrst", 0, 20, "abcde", 2, 3, -2);
4226 test("abcdefghijklmnopqrst", 0, 20, "abcde", 2, 4, -2);
4227 test("abcdefghijklmnopqrst", 0, 20, "abcde", 4, 0, 20);
4228 test("abcdefghijklmnopqrst", 0, 20, "abcde", 4, 1, -4);
4229 test("abcdefghijklmnopqrst", 0, 20, "abcde", 4, 2, -4);
4230 test("abcdefghijklmnopqrst", 0, 20, "abcde", 5, 0, 20);
4231 test("abcdefghijklmnopqrst", 0, 20, "abcde", 5, 1, 20);
4232 test("abcdefghijklmnopqrst", 0, 20, "abcde", 6, 0, 0);
4233 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 0, 0, 20);
4234 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 0, 1, 19);
4235 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 0, 5, 15);
4236 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 0, 9, 11);
4237 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 0, 10, 10);
4238 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 0, 11, 10);
4239 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 1, 0, 20);
4240 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 1, 1, -1);
4241 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 1, 4, -1);
4242 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 1, 8, -1);
4243 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 1, 9, -1);
4244 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 1, 10, -1);
4245 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 5, 0, 20);
4246 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 5, 1, -5);
4247 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 5, 2, -5);
4248 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 5, 4, -5);
4249 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 5, 5, -5);
4250 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 5, 6, -5);
4251 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 9, 0, 20);
4252 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 9, 1, -9);
4253 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 9, 2, -9);
4254 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 10, 0, 20);
4255 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 10, 1, 20);
4256 test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 11, 0, 0);
4257 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0, 0, 20);
4258 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0, 1, 19);
4259 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0, 10, 10);
4260 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0, 19, 1);
4261 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0, 20, 0);
4262 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0, 21, 0);
4263 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 1, 0, 20);
4264 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 1, 1, -1);
4265 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 1, 9, -1);
4266 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 1, 18, -1);
4267 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 1, 19, -1);
4268 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 1, 20, -1);
4269 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 10, 0, 20);
4270 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 10, 1, -10);
4271 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 10, 5, -10);
4272 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 10, 9, -10);
4273 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 10, 10, -10);
4274 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 10, 11, -10);
4275 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 19, 0, 20);
4276 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 19, 1, -19);
4277 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 19, 2, -19);
4278 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 20, 0, 20);
4279 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 20, 1, 20);
4280 test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 21, 0, 0);
4281 test("abcdefghijklmnopqrst", 0, 21, "", 0, 0, 20);
4282 test("abcdefghijklmnopqrst", 0, 21, "", 0, 1, 20);
4283 test("abcdefghijklmnopqrst", 0, 21, "", 1, 0, 0);
4284 test("abcdefghijklmnopqrst", 0, 21, "abcde", 0, 0, 20);
4285 test("abcdefghijklmnopqrst", 0, 21, "abcde", 0, 1, 19);
4286 test("abcdefghijklmnopqrst", 0, 21, "abcde", 0, 2, 18);
4287 test("abcdefghijklmnopqrst", 0, 21, "abcde", 0, 4, 16);
4288 test("abcdefghijklmnopqrst", 0, 21, "abcde", 0, 5, 15);
4289 test("abcdefghijklmnopqrst", 0, 21, "abcde", 0, 6, 15);
4290 test("abcdefghijklmnopqrst", 0, 21, "abcde", 1, 0, 20);
4291 test("abcdefghijklmnopqrst", 0, 21, "abcde", 1, 1, -1);
4292 test("abcdefghijklmnopqrst", 0, 21, "abcde", 1, 2, -1);
4293 test("abcdefghijklmnopqrst", 0, 21, "abcde", 1, 3, -1);
4294 test("abcdefghijklmnopqrst", 0, 21, "abcde", 1, 4, -1);
4295 test("abcdefghijklmnopqrst", 0, 21, "abcde", 1, 5, -1);
4296 test("abcdefghijklmnopqrst", 0, 21, "abcde", 2, 0, 20);
4297 test("abcdefghijklmnopqrst", 0, 21, "abcde", 2, 1, -2);
4298 test("abcdefghijklmnopqrst", 0, 21, "abcde", 2, 2, -2);
4299 test("abcdefghijklmnopqrst", 0, 21, "abcde", 2, 3, -2);
4300 test("abcdefghijklmnopqrst", 0, 21, "abcde", 2, 4, -2);
4301 test("abcdefghijklmnopqrst", 0, 21, "abcde", 4, 0, 20);
4302 test("abcdefghijklmnopqrst", 0, 21, "abcde", 4, 1, -4);
4303 test("abcdefghijklmnopqrst", 0, 21, "abcde", 4, 2, -4);
4304 test("abcdefghijklmnopqrst", 0, 21, "abcde", 5, 0, 20);
4305 test("abcdefghijklmnopqrst", 0, 21, "abcde", 5, 1, 20);
4306 test("abcdefghijklmnopqrst", 0, 21, "abcde", 6, 0, 0);
4307 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 0, 0, 20);
4308 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 0, 1, 19);
4309 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 0, 5, 15);
4310 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 0, 9, 11);
4311}
4312
4313void test41()
4314{
4315 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 0, 10, 10);
4316 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 0, 11, 10);
4317 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 1, 0, 20);
4318 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 1, 1, -1);
4319 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 1, 4, -1);
4320 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 1, 8, -1);
4321 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 1, 9, -1);
4322 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 1, 10, -1);
4323 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 5, 0, 20);
4324 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 5, 1, -5);
4325 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 5, 2, -5);
4326 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 5, 4, -5);
4327 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 5, 5, -5);
4328 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 5, 6, -5);
4329 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 9, 0, 20);
4330 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 9, 1, -9);
4331 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 9, 2, -9);
4332 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 10, 0, 20);
4333 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 10, 1, 20);
4334 test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 11, 0, 0);
4335 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0, 0, 20);
4336 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0, 1, 19);
4337 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0, 10, 10);
4338 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0, 19, 1);
4339 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0, 20, 0);
4340 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0, 21, 0);
4341 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 1, 0, 20);
4342 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 1, 1, -1);
4343 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 1, 9, -1);
4344 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 1, 18, -1);
4345 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 1, 19, -1);
4346 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 1, 20, -1);
4347 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 10, 0, 20);
4348 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 10, 1, -10);
4349 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 10, 5, -10);
4350 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 10, 9, -10);
4351 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 10, 10, -10);
4352 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 10, 11, -10);
4353 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 19, 0, 20);
4354 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 19, 1, -19);
4355 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 19, 2, -19);
4356 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 20, 0, 20);
4357 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 20, 1, 20);
4358 test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 21, 0, 0);
4359 test("abcdefghijklmnopqrst", 1, 0, "", 0, 0, 0);
4360 test("abcdefghijklmnopqrst", 1, 0, "", 0, 1, 0);
4361 test("abcdefghijklmnopqrst", 1, 0, "", 1, 0, 0);
4362 test("abcdefghijklmnopqrst", 1, 0, "abcde", 0, 0, 0);
4363 test("abcdefghijklmnopqrst", 1, 0, "abcde", 0, 1, -1);
4364 test("abcdefghijklmnopqrst", 1, 0, "abcde", 0, 2, -2);
4365 test("abcdefghijklmnopqrst", 1, 0, "abcde", 0, 4, -4);
4366 test("abcdefghijklmnopqrst", 1, 0, "abcde", 0, 5, -5);
4367 test("abcdefghijklmnopqrst", 1, 0, "abcde", 0, 6, -5);
4368 test("abcdefghijklmnopqrst", 1, 0, "abcde", 1, 0, 0);
4369 test("abcdefghijklmnopqrst", 1, 0, "abcde", 1, 1, -1);
4370 test("abcdefghijklmnopqrst", 1, 0, "abcde", 1, 2, -2);
4371 test("abcdefghijklmnopqrst", 1, 0, "abcde", 1, 3, -3);
4372 test("abcdefghijklmnopqrst", 1, 0, "abcde", 1, 4, -4);
4373 test("abcdefghijklmnopqrst", 1, 0, "abcde", 1, 5, -4);
4374 test("abcdefghijklmnopqrst", 1, 0, "abcde", 2, 0, 0);
4375 test("abcdefghijklmnopqrst", 1, 0, "abcde", 2, 1, -1);
4376 test("abcdefghijklmnopqrst", 1, 0, "abcde", 2, 2, -2);
4377 test("abcdefghijklmnopqrst", 1, 0, "abcde", 2, 3, -3);
4378 test("abcdefghijklmnopqrst", 1, 0, "abcde", 2, 4, -3);
4379 test("abcdefghijklmnopqrst", 1, 0, "abcde", 4, 0, 0);
4380 test("abcdefghijklmnopqrst", 1, 0, "abcde", 4, 1, -1);
4381 test("abcdefghijklmnopqrst", 1, 0, "abcde", 4, 2, -1);
4382 test("abcdefghijklmnopqrst", 1, 0, "abcde", 5, 0, 0);
4383 test("abcdefghijklmnopqrst", 1, 0, "abcde", 5, 1, 0);
4384 test("abcdefghijklmnopqrst", 1, 0, "abcde", 6, 0, 0);
4385 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 0, 0, 0);
4386 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 0, 1, -1);
4387 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 0, 5, -5);
4388 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 0, 9, -9);
4389 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 0, 10, -10);
4390 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 0, 11, -10);
4391 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 1, 0, 0);
4392 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 1, 1, -1);
4393 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 1, 4, -4);
4394 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 1, 8, -8);
4395 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 1, 9, -9);
4396 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 1, 10, -9);
4397 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 5, 0, 0);
4398 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 5, 1, -1);
4399 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 5, 2, -2);
4400 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 5, 4, -4);
4401 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 5, 5, -5);
4402 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 5, 6, -5);
4403 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 9, 0, 0);
4404 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 9, 1, -1);
4405 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 9, 2, -1);
4406 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 10, 0, 0);
4407 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 10, 1, 0);
4408 test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 11, 0, 0);
4409 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 0, 0, 0);
4410 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 0, 1, -1);
4411 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 0, 10, -10);
4412 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 0, 19, -19);
4413 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 0, 20, -20);
4414 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 0, 21, -20);
4415}
4416
4417void test42()
4418{
4419 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 1, 0, 0);
4420 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 1, 1, -1);
4421 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 1, 9, -9);
4422 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 1, 18, -18);
4423 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 1, 19, -19);
4424 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 1, 20, -19);
4425 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 10, 0, 0);
4426 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 10, 1, -1);
4427 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 10, 5, -5);
4428 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 10, 9, -9);
4429 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 10, 10, -10);
4430 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 10, 11, -10);
4431 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 19, 0, 0);
4432 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 19, 1, -1);
4433 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 19, 2, -1);
4434 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 20, 0, 0);
4435 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 20, 1, 0);
4436 test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 21, 0, 0);
4437 test("abcdefghijklmnopqrst", 1, 1, "", 0, 0, 1);
4438 test("abcdefghijklmnopqrst", 1, 1, "", 0, 1, 1);
4439 test("abcdefghijklmnopqrst", 1, 1, "", 1, 0, 0);
4440 test("abcdefghijklmnopqrst", 1, 1, "abcde", 0, 0, 1);
4441 test("abcdefghijklmnopqrst", 1, 1, "abcde", 0, 1, 1);
4442 test("abcdefghijklmnopqrst", 1, 1, "abcde", 0, 2, 1);
4443 test("abcdefghijklmnopqrst", 1, 1, "abcde", 0, 4, 1);
4444 test("abcdefghijklmnopqrst", 1, 1, "abcde", 0, 5, 1);
4445 test("abcdefghijklmnopqrst", 1, 1, "abcde", 0, 6, 1);
4446 test("abcdefghijklmnopqrst", 1, 1, "abcde", 1, 0, 1);
4447 test("abcdefghijklmnopqrst", 1, 1, "abcde", 1, 1, 0);
4448 test("abcdefghijklmnopqrst", 1, 1, "abcde", 1, 2, -1);
4449 test("abcdefghijklmnopqrst", 1, 1, "abcde", 1, 3, -2);
4450 test("abcdefghijklmnopqrst", 1, 1, "abcde", 1, 4, -3);
4451 test("abcdefghijklmnopqrst", 1, 1, "abcde", 1, 5, -3);
4452 test("abcdefghijklmnopqrst", 1, 1, "abcde", 2, 0, 1);
4453 test("abcdefghijklmnopqrst", 1, 1, "abcde", 2, 1, -1);
4454 test("abcdefghijklmnopqrst", 1, 1, "abcde", 2, 2, -1);
4455 test("abcdefghijklmnopqrst", 1, 1, "abcde", 2, 3, -1);
4456 test("abcdefghijklmnopqrst", 1, 1, "abcde", 2, 4, -1);
4457 test("abcdefghijklmnopqrst", 1, 1, "abcde", 4, 0, 1);
4458 test("abcdefghijklmnopqrst", 1, 1, "abcde", 4, 1, -3);
4459 test("abcdefghijklmnopqrst", 1, 1, "abcde", 4, 2, -3);
4460 test("abcdefghijklmnopqrst", 1, 1, "abcde", 5, 0, 1);
4461 test("abcdefghijklmnopqrst", 1, 1, "abcde", 5, 1, 1);
4462 test("abcdefghijklmnopqrst", 1, 1, "abcde", 6, 0, 0);
4463 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 0, 0, 1);
4464 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 0, 1, 1);
4465 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 0, 5, 1);
4466 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 0, 9, 1);
4467 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 0, 10, 1);
4468 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 0, 11, 1);
4469 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1, 0, 1);
4470 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1, 1, 0);
4471 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1, 4, -3);
4472 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1, 8, -7);
4473 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1, 9, -8);
4474 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1, 10, -8);
4475 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 5, 0, 1);
4476 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 5, 1, -4);
4477 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 5, 2, -4);
4478 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 5, 4, -4);
4479 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 5, 5, -4);
4480 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 5, 6, -4);
4481 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 9, 0, 1);
4482 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 9, 1, -8);
4483 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 9, 2, -8);
4484 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 10, 0, 1);
4485 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 10, 1, 1);
4486 test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 11, 0, 0);
4487 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 0, 0, 1);
4488 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 0, 1, 1);
4489 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 0, 10, 1);
4490 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 0, 19, 1);
4491 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 0, 20, 1);
4492 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 0, 21, 1);
4493 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1, 0, 1);
4494 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1, 1, 0);
4495 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1, 9, -8);
4496 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1, 18, -17);
4497 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1, 19, -18);
4498 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1, 20, -18);
4499 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 10, 0, 1);
4500 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 10, 1, -9);
4501 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 10, 5, -9);
4502 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 10, 9, -9);
4503 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 10, 10, -9);
4504 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 10, 11, -9);
4505 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 19, 0, 1);
4506 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 19, 1, -18);
4507 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 19, 2, -18);
4508 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 20, 0, 1);
4509 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 20, 1, 1);
4510 test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 21, 0, 0);
4511 test("abcdefghijklmnopqrst", 1, 9, "", 0, 0, 9);
4512 test("abcdefghijklmnopqrst", 1, 9, "", 0, 1, 9);
4513 test("abcdefghijklmnopqrst", 1, 9, "", 1, 0, 0);
4514 test("abcdefghijklmnopqrst", 1, 9, "abcde", 0, 0, 9);
4515 test("abcdefghijklmnopqrst", 1, 9, "abcde", 0, 1, 1);
4516 test("abcdefghijklmnopqrst", 1, 9, "abcde", 0, 2, 1);
4517 test("abcdefghijklmnopqrst", 1, 9, "abcde", 0, 4, 1);
4518 test("abcdefghijklmnopqrst", 1, 9, "abcde", 0, 5, 1);
4519}
4520
4521void test43()
4522{
4523 test("abcdefghijklmnopqrst", 1, 9, "abcde", 0, 6, 1);
4524 test("abcdefghijklmnopqrst", 1, 9, "abcde", 1, 0, 9);
4525 test("abcdefghijklmnopqrst", 1, 9, "abcde", 1, 1, 8);
4526 test("abcdefghijklmnopqrst", 1, 9, "abcde", 1, 2, 7);
4527 test("abcdefghijklmnopqrst", 1, 9, "abcde", 1, 3, 6);
4528 test("abcdefghijklmnopqrst", 1, 9, "abcde", 1, 4, 5);
4529 test("abcdefghijklmnopqrst", 1, 9, "abcde", 1, 5, 5);
4530 test("abcdefghijklmnopqrst", 1, 9, "abcde", 2, 0, 9);
4531 test("abcdefghijklmnopqrst", 1, 9, "abcde", 2, 1, -1);
4532 test("abcdefghijklmnopqrst", 1, 9, "abcde", 2, 2, -1);
4533 test("abcdefghijklmnopqrst", 1, 9, "abcde", 2, 3, -1);
4534 test("abcdefghijklmnopqrst", 1, 9, "abcde", 2, 4, -1);
4535 test("abcdefghijklmnopqrst", 1, 9, "abcde", 4, 0, 9);
4536 test("abcdefghijklmnopqrst", 1, 9, "abcde", 4, 1, -3);
4537 test("abcdefghijklmnopqrst", 1, 9, "abcde", 4, 2, -3);
4538 test("abcdefghijklmnopqrst", 1, 9, "abcde", 5, 0, 9);
4539 test("abcdefghijklmnopqrst", 1, 9, "abcde", 5, 1, 9);
4540 test("abcdefghijklmnopqrst", 1, 9, "abcde", 6, 0, 0);
4541 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 0, 0, 9);
4542 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 0, 1, 1);
4543 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 0, 5, 1);
4544 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 0, 9, 1);
4545 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 0, 10, 1);
4546 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 0, 11, 1);
4547 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1, 0, 9);
4548 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1, 1, 8);
4549 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1, 4, 5);
4550 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1, 8, 1);
4551 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1, 9, 0);
4552 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1, 10, 0);
4553 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 5, 0, 9);
4554 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 5, 1, -4);
4555 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 5, 2, -4);
4556 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 5, 4, -4);
4557 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 5, 5, -4);
4558 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 5, 6, -4);
4559 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 9, 0, 9);
4560 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 9, 1, -8);
4561 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 9, 2, -8);
4562 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 10, 0, 9);
4563 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 10, 1, 9);
4564 test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 11, 0, 0);
4565 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 0, 0, 9);
4566 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 0, 1, 1);
4567 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 0, 10, 1);
4568 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 0, 19, 1);
4569 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 0, 20, 1);
4570 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 0, 21, 1);
4571 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1, 0, 9);
4572 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1, 1, 8);
4573 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1, 9, 0);
4574 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1, 18, -9);
4575 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1, 19, -10);
4576 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1, 20, -10);
4577 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 10, 0, 9);
4578 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 10, 1, -9);
4579 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 10, 5, -9);
4580 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 10, 9, -9);
4581 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 10, 10, -9);
4582 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 10, 11, -9);
4583 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 19, 0, 9);
4584 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 19, 1, -18);
4585 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 19, 2, -18);
4586 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 20, 0, 9);
4587 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 20, 1, 9);
4588 test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 21, 0, 0);
4589 test("abcdefghijklmnopqrst", 1, 18, "", 0, 0, 18);
4590 test("abcdefghijklmnopqrst", 1, 18, "", 0, 1, 18);
4591 test("abcdefghijklmnopqrst", 1, 18, "", 1, 0, 0);
4592 test("abcdefghijklmnopqrst", 1, 18, "abcde", 0, 0, 18);
4593 test("abcdefghijklmnopqrst", 1, 18, "abcde", 0, 1, 1);
4594 test("abcdefghijklmnopqrst", 1, 18, "abcde", 0, 2, 1);
4595 test("abcdefghijklmnopqrst", 1, 18, "abcde", 0, 4, 1);
4596 test("abcdefghijklmnopqrst", 1, 18, "abcde", 0, 5, 1);
4597 test("abcdefghijklmnopqrst", 1, 18, "abcde", 0, 6, 1);
4598 test("abcdefghijklmnopqrst", 1, 18, "abcde", 1, 0, 18);
4599 test("abcdefghijklmnopqrst", 1, 18, "abcde", 1, 1, 17);
4600 test("abcdefghijklmnopqrst", 1, 18, "abcde", 1, 2, 16);
4601 test("abcdefghijklmnopqrst", 1, 18, "abcde", 1, 3, 15);
4602 test("abcdefghijklmnopqrst", 1, 18, "abcde", 1, 4, 14);
4603 test("abcdefghijklmnopqrst", 1, 18, "abcde", 1, 5, 14);
4604 test("abcdefghijklmnopqrst", 1, 18, "abcde", 2, 0, 18);
4605 test("abcdefghijklmnopqrst", 1, 18, "abcde", 2, 1, -1);
4606 test("abcdefghijklmnopqrst", 1, 18, "abcde", 2, 2, -1);
4607 test("abcdefghijklmnopqrst", 1, 18, "abcde", 2, 3, -1);
4608 test("abcdefghijklmnopqrst", 1, 18, "abcde", 2, 4, -1);
4609 test("abcdefghijklmnopqrst", 1, 18, "abcde", 4, 0, 18);
4610 test("abcdefghijklmnopqrst", 1, 18, "abcde", 4, 1, -3);
4611 test("abcdefghijklmnopqrst", 1, 18, "abcde", 4, 2, -3);
4612 test("abcdefghijklmnopqrst", 1, 18, "abcde", 5, 0, 18);
4613 test("abcdefghijklmnopqrst", 1, 18, "abcde", 5, 1, 18);
4614 test("abcdefghijklmnopqrst", 1, 18, "abcde", 6, 0, 0);
4615 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 0, 0, 18);
4616 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 0, 1, 1);
4617 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 0, 5, 1);
4618 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 0, 9, 1);
4619 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 0, 10, 1);
4620 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 0, 11, 1);
4621 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1, 0, 18);
4622 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1, 1, 17);
4623}
4624
4625void test44()
4626{
4627 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1, 4, 14);
4628 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1, 8, 10);
4629 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1, 9, 9);
4630 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1, 10, 9);
4631 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 5, 0, 18);
4632 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 5, 1, -4);
4633 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 5, 2, -4);
4634 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 5, 4, -4);
4635 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 5, 5, -4);
4636 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 5, 6, -4);
4637 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 9, 0, 18);
4638 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 9, 1, -8);
4639 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 9, 2, -8);
4640 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 10, 0, 18);
4641 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 10, 1, 18);
4642 test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 11, 0, 0);
4643 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 0, 0, 18);
4644 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 0, 1, 1);
4645 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 0, 10, 1);
4646 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 0, 19, 1);
4647 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 0, 20, 1);
4648 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 0, 21, 1);
4649 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1, 0, 18);
4650 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1, 1, 17);
4651 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1, 9, 9);
4652 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1, 18, 0);
4653 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1, 19, -1);
4654 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1, 20, -1);
4655 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 10, 0, 18);
4656 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 10, 1, -9);
4657 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 10, 5, -9);
4658 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 10, 9, -9);
4659 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 10, 10, -9);
4660 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 10, 11, -9);
4661 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 19, 0, 18);
4662 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 19, 1, -18);
4663 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 19, 2, -18);
4664 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 20, 0, 18);
4665 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 20, 1, 18);
4666 test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 21, 0, 0);
4667 test("abcdefghijklmnopqrst", 1, 19, "", 0, 0, 19);
4668 test("abcdefghijklmnopqrst", 1, 19, "", 0, 1, 19);
4669 test("abcdefghijklmnopqrst", 1, 19, "", 1, 0, 0);
4670 test("abcdefghijklmnopqrst", 1, 19, "abcde", 0, 0, 19);
4671 test("abcdefghijklmnopqrst", 1, 19, "abcde", 0, 1, 1);
4672 test("abcdefghijklmnopqrst", 1, 19, "abcde", 0, 2, 1);
4673 test("abcdefghijklmnopqrst", 1, 19, "abcde", 0, 4, 1);
4674 test("abcdefghijklmnopqrst", 1, 19, "abcde", 0, 5, 1);
4675 test("abcdefghijklmnopqrst", 1, 19, "abcde", 0, 6, 1);
4676 test("abcdefghijklmnopqrst", 1, 19, "abcde", 1, 0, 19);
4677 test("abcdefghijklmnopqrst", 1, 19, "abcde", 1, 1, 18);
4678 test("abcdefghijklmnopqrst", 1, 19, "abcde", 1, 2, 17);
4679 test("abcdefghijklmnopqrst", 1, 19, "abcde", 1, 3, 16);
4680 test("abcdefghijklmnopqrst", 1, 19, "abcde", 1, 4, 15);
4681 test("abcdefghijklmnopqrst", 1, 19, "abcde", 1, 5, 15);
4682 test("abcdefghijklmnopqrst", 1, 19, "abcde", 2, 0, 19);
4683 test("abcdefghijklmnopqrst", 1, 19, "abcde", 2, 1, -1);
4684 test("abcdefghijklmnopqrst", 1, 19, "abcde", 2, 2, -1);
4685 test("abcdefghijklmnopqrst", 1, 19, "abcde", 2, 3, -1);
4686 test("abcdefghijklmnopqrst", 1, 19, "abcde", 2, 4, -1);
4687 test("abcdefghijklmnopqrst", 1, 19, "abcde", 4, 0, 19);
4688 test("abcdefghijklmnopqrst", 1, 19, "abcde", 4, 1, -3);
4689 test("abcdefghijklmnopqrst", 1, 19, "abcde", 4, 2, -3);
4690 test("abcdefghijklmnopqrst", 1, 19, "abcde", 5, 0, 19);
4691 test("abcdefghijklmnopqrst", 1, 19, "abcde", 5, 1, 19);
4692 test("abcdefghijklmnopqrst", 1, 19, "abcde", 6, 0, 0);
4693 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 0, 0, 19);
4694 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 0, 1, 1);
4695 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 0, 5, 1);
4696 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 0, 9, 1);
4697 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 0, 10, 1);
4698 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 0, 11, 1);
4699 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1, 0, 19);
4700 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1, 1, 18);
4701 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1, 4, 15);
4702 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1, 8, 11);
4703 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1, 9, 10);
4704 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1, 10, 10);
4705 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 5, 0, 19);
4706 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 5, 1, -4);
4707 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 5, 2, -4);
4708 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 5, 4, -4);
4709 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 5, 5, -4);
4710 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 5, 6, -4);
4711 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 9, 0, 19);
4712 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 9, 1, -8);
4713 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 9, 2, -8);
4714 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 10, 0, 19);
4715 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 10, 1, 19);
4716 test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 11, 0, 0);
4717 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 0, 0, 19);
4718 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 0, 1, 1);
4719 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 0, 10, 1);
4720 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 0, 19, 1);
4721 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 0, 20, 1);
4722 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 0, 21, 1);
4723 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1, 0, 19);
4724 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1, 1, 18);
4725 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1, 9, 10);
4726 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1, 18, 1);
4727}
4728
4729void test45()
4730{
4731 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1, 19, 0);
4732 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1, 20, 0);
4733 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 10, 0, 19);
4734 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 10, 1, -9);
4735 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 10, 5, -9);
4736 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 10, 9, -9);
4737 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 10, 10, -9);
4738 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 10, 11, -9);
4739 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 19, 0, 19);
4740 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 19, 1, -18);
4741 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 19, 2, -18);
4742 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 20, 0, 19);
4743 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 20, 1, 19);
4744 test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 21, 0, 0);
4745 test("abcdefghijklmnopqrst", 1, 20, "", 0, 0, 19);
4746 test("abcdefghijklmnopqrst", 1, 20, "", 0, 1, 19);
4747 test("abcdefghijklmnopqrst", 1, 20, "", 1, 0, 0);
4748 test("abcdefghijklmnopqrst", 1, 20, "abcde", 0, 0, 19);
4749 test("abcdefghijklmnopqrst", 1, 20, "abcde", 0, 1, 1);
4750 test("abcdefghijklmnopqrst", 1, 20, "abcde", 0, 2, 1);
4751 test("abcdefghijklmnopqrst", 1, 20, "abcde", 0, 4, 1);
4752 test("abcdefghijklmnopqrst", 1, 20, "abcde", 0, 5, 1);
4753 test("abcdefghijklmnopqrst", 1, 20, "abcde", 0, 6, 1);
4754 test("abcdefghijklmnopqrst", 1, 20, "abcde", 1, 0, 19);
4755 test("abcdefghijklmnopqrst", 1, 20, "abcde", 1, 1, 18);
4756 test("abcdefghijklmnopqrst", 1, 20, "abcde", 1, 2, 17);
4757 test("abcdefghijklmnopqrst", 1, 20, "abcde", 1, 3, 16);
4758 test("abcdefghijklmnopqrst", 1, 20, "abcde", 1, 4, 15);
4759 test("abcdefghijklmnopqrst", 1, 20, "abcde", 1, 5, 15);
4760 test("abcdefghijklmnopqrst", 1, 20, "abcde", 2, 0, 19);
4761 test("abcdefghijklmnopqrst", 1, 20, "abcde", 2, 1, -1);
4762 test("abcdefghijklmnopqrst", 1, 20, "abcde", 2, 2, -1);
4763 test("abcdefghijklmnopqrst", 1, 20, "abcde", 2, 3, -1);
4764 test("abcdefghijklmnopqrst", 1, 20, "abcde", 2, 4, -1);
4765 test("abcdefghijklmnopqrst", 1, 20, "abcde", 4, 0, 19);
4766 test("abcdefghijklmnopqrst", 1, 20, "abcde", 4, 1, -3);
4767 test("abcdefghijklmnopqrst", 1, 20, "abcde", 4, 2, -3);
4768 test("abcdefghijklmnopqrst", 1, 20, "abcde", 5, 0, 19);
4769 test("abcdefghijklmnopqrst", 1, 20, "abcde", 5, 1, 19);
4770 test("abcdefghijklmnopqrst", 1, 20, "abcde", 6, 0, 0);
4771 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 0, 0, 19);
4772 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 0, 1, 1);
4773 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 0, 5, 1);
4774 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 0, 9, 1);
4775 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 0, 10, 1);
4776 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 0, 11, 1);
4777 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1, 0, 19);
4778 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1, 1, 18);
4779 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1, 4, 15);
4780 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1, 8, 11);
4781 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1, 9, 10);
4782 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1, 10, 10);
4783 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 5, 0, 19);
4784 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 5, 1, -4);
4785 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 5, 2, -4);
4786 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 5, 4, -4);
4787 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 5, 5, -4);
4788 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 5, 6, -4);
4789 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 9, 0, 19);
4790 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 9, 1, -8);
4791 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 9, 2, -8);
4792 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 10, 0, 19);
4793 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 10, 1, 19);
4794 test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 11, 0, 0);
4795 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 0, 0, 19);
4796 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 0, 1, 1);
4797 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 0, 10, 1);
4798 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 0, 19, 1);
4799 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 0, 20, 1);
4800 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 0, 21, 1);
4801 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1, 0, 19);
4802 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1, 1, 18);
4803 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1, 9, 10);
4804 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1, 18, 1);
4805 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1, 19, 0);
4806 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1, 20, 0);
4807 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 10, 0, 19);
4808 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 10, 1, -9);
4809 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 10, 5, -9);
4810 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 10, 9, -9);
4811 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 10, 10, -9);
4812 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 10, 11, -9);
4813 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 19, 0, 19);
4814 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 19, 1, -18);
4815 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 19, 2, -18);
4816 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 20, 0, 19);
4817 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 20, 1, 19);
4818 test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 21, 0, 0);
4819 test("abcdefghijklmnopqrst", 10, 0, "", 0, 0, 0);
4820 test("abcdefghijklmnopqrst", 10, 0, "", 0, 1, 0);
4821 test("abcdefghijklmnopqrst", 10, 0, "", 1, 0, 0);
4822 test("abcdefghijklmnopqrst", 10, 0, "abcde", 0, 0, 0);
4823 test("abcdefghijklmnopqrst", 10, 0, "abcde", 0, 1, -1);
4824 test("abcdefghijklmnopqrst", 10, 0, "abcde", 0, 2, -2);
4825 test("abcdefghijklmnopqrst", 10, 0, "abcde", 0, 4, -4);
4826 test("abcdefghijklmnopqrst", 10, 0, "abcde", 0, 5, -5);
4827 test("abcdefghijklmnopqrst", 10, 0, "abcde", 0, 6, -5);
4828 test("abcdefghijklmnopqrst", 10, 0, "abcde", 1, 0, 0);
4829 test("abcdefghijklmnopqrst", 10, 0, "abcde", 1, 1, -1);
4830 test("abcdefghijklmnopqrst", 10, 0, "abcde", 1, 2, -2);
4831}
4832
4833void test46()
4834{
4835 test("abcdefghijklmnopqrst", 10, 0, "abcde", 1, 3, -3);
4836 test("abcdefghijklmnopqrst", 10, 0, "abcde", 1, 4, -4);
4837 test("abcdefghijklmnopqrst", 10, 0, "abcde", 1, 5, -4);
4838 test("abcdefghijklmnopqrst", 10, 0, "abcde", 2, 0, 0);
4839 test("abcdefghijklmnopqrst", 10, 0, "abcde", 2, 1, -1);
4840 test("abcdefghijklmnopqrst", 10, 0, "abcde", 2, 2, -2);
4841 test("abcdefghijklmnopqrst", 10, 0, "abcde", 2, 3, -3);
4842 test("abcdefghijklmnopqrst", 10, 0, "abcde", 2, 4, -3);
4843 test("abcdefghijklmnopqrst", 10, 0, "abcde", 4, 0, 0);
4844 test("abcdefghijklmnopqrst", 10, 0, "abcde", 4, 1, -1);
4845 test("abcdefghijklmnopqrst", 10, 0, "abcde", 4, 2, -1);
4846 test("abcdefghijklmnopqrst", 10, 0, "abcde", 5, 0, 0);
4847 test("abcdefghijklmnopqrst", 10, 0, "abcde", 5, 1, 0);
4848 test("abcdefghijklmnopqrst", 10, 0, "abcde", 6, 0, 0);
4849 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 0, 0, 0);
4850 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 0, 1, -1);
4851 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 0, 5, -5);
4852 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 0, 9, -9);
4853 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 0, 10, -10);
4854 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 0, 11, -10);
4855 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 1, 0, 0);
4856 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 1, 1, -1);
4857 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 1, 4, -4);
4858 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 1, 8, -8);
4859 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 1, 9, -9);
4860 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 1, 10, -9);
4861 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 5, 0, 0);
4862 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 5, 1, -1);
4863 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 5, 2, -2);
4864 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 5, 4, -4);
4865 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 5, 5, -5);
4866 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 5, 6, -5);
4867 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 9, 0, 0);
4868 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 9, 1, -1);
4869 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 9, 2, -1);
4870 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 10, 0, 0);
4871 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 10, 1, 0);
4872 test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 11, 0, 0);
4873 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 0, 0, 0);
4874 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 0, 1, -1);
4875 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 0, 10, -10);
4876 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 0, 19, -19);
4877 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 0, 20, -20);
4878 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 0, 21, -20);
4879 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 1, 0, 0);
4880 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 1, 1, -1);
4881 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 1, 9, -9);
4882 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 1, 18, -18);
4883 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 1, 19, -19);
4884 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 1, 20, -19);
4885 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 10, 0, 0);
4886 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 10, 1, -1);
4887 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 10, 5, -5);
4888 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 10, 9, -9);
4889 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 10, 10, -10);
4890 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 10, 11, -10);
4891 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 19, 0, 0);
4892 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 19, 1, -1);
4893 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 19, 2, -1);
4894 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 20, 0, 0);
4895 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 20, 1, 0);
4896 test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 21, 0, 0);
4897 test("abcdefghijklmnopqrst", 10, 1, "", 0, 0, 1);
4898 test("abcdefghijklmnopqrst", 10, 1, "", 0, 1, 1);
4899 test("abcdefghijklmnopqrst", 10, 1, "", 1, 0, 0);
4900 test("abcdefghijklmnopqrst", 10, 1, "abcde", 0, 0, 1);
4901 test("abcdefghijklmnopqrst", 10, 1, "abcde", 0, 1, 10);
4902 test("abcdefghijklmnopqrst", 10, 1, "abcde", 0, 2, 10);
4903 test("abcdefghijklmnopqrst", 10, 1, "abcde", 0, 4, 10);
4904 test("abcdefghijklmnopqrst", 10, 1, "abcde", 0, 5, 10);
4905 test("abcdefghijklmnopqrst", 10, 1, "abcde", 0, 6, 10);
4906 test("abcdefghijklmnopqrst", 10, 1, "abcde", 1, 0, 1);
4907 test("abcdefghijklmnopqrst", 10, 1, "abcde", 1, 1, 9);
4908 test("abcdefghijklmnopqrst", 10, 1, "abcde", 1, 2, 9);
4909 test("abcdefghijklmnopqrst", 10, 1, "abcde", 1, 3, 9);
4910 test("abcdefghijklmnopqrst", 10, 1, "abcde", 1, 4, 9);
4911 test("abcdefghijklmnopqrst", 10, 1, "abcde", 1, 5, 9);
4912 test("abcdefghijklmnopqrst", 10, 1, "abcde", 2, 0, 1);
4913 test("abcdefghijklmnopqrst", 10, 1, "abcde", 2, 1, 8);
4914 test("abcdefghijklmnopqrst", 10, 1, "abcde", 2, 2, 8);
4915 test("abcdefghijklmnopqrst", 10, 1, "abcde", 2, 3, 8);
4916 test("abcdefghijklmnopqrst", 10, 1, "abcde", 2, 4, 8);
4917 test("abcdefghijklmnopqrst", 10, 1, "abcde", 4, 0, 1);
4918 test("abcdefghijklmnopqrst", 10, 1, "abcde", 4, 1, 6);
4919 test("abcdefghijklmnopqrst", 10, 1, "abcde", 4, 2, 6);
4920 test("abcdefghijklmnopqrst", 10, 1, "abcde", 5, 0, 1);
4921 test("abcdefghijklmnopqrst", 10, 1, "abcde", 5, 1, 1);
4922 test("abcdefghijklmnopqrst", 10, 1, "abcde", 6, 0, 0);
4923 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 0, 0, 1);
4924 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 0, 1, 10);
4925 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 0, 5, 10);
4926 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 0, 9, 10);
4927 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 0, 10, 10);
4928 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 0, 11, 10);
4929 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 1, 0, 1);
4930 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 1, 1, 9);
4931 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 1, 4, 9);
4932 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 1, 8, 9);
4933 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 1, 9, 9);
4934 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 1, 10, 9);
4935}
4936
4937void test47()
4938{
4939 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 5, 0, 1);
4940 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 5, 1, 5);
4941 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 5, 2, 5);
4942 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 5, 4, 5);
4943 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 5, 5, 5);
4944 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 5, 6, 5);
4945 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 9, 0, 1);
4946 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 9, 1, 1);
4947 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 9, 2, 1);
4948 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 10, 0, 1);
4949 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 10, 1, 1);
4950 test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 11, 0, 0);
4951 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 0, 0, 1);
4952 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 0, 1, 10);
4953 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 0, 10, 10);
4954 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 0, 19, 10);
4955 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 0, 20, 10);
4956 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 0, 21, 10);
4957 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 1, 0, 1);
4958 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 1, 1, 9);
4959 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 1, 9, 9);
4960 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 1, 18, 9);
4961 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 1, 19, 9);
4962 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 1, 20, 9);
4963 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10, 0, 1);
4964 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10, 1, 0);
4965 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10, 5, -4);
4966 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10, 9, -8);
4967 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10, 10, -9);
4968 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10, 11, -9);
4969 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 19, 0, 1);
4970 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 19, 1, -9);
4971 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 19, 2, -9);
4972 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 20, 0, 1);
4973 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 20, 1, 1);
4974 test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 21, 0, 0);
4975 test("abcdefghijklmnopqrst", 10, 5, "", 0, 0, 5);
4976 test("abcdefghijklmnopqrst", 10, 5, "", 0, 1, 5);
4977 test("abcdefghijklmnopqrst", 10, 5, "", 1, 0, 0);
4978 test("abcdefghijklmnopqrst", 10, 5, "abcde", 0, 0, 5);
4979 test("abcdefghijklmnopqrst", 10, 5, "abcde", 0, 1, 10);
4980 test("abcdefghijklmnopqrst", 10, 5, "abcde", 0, 2, 10);
4981 test("abcdefghijklmnopqrst", 10, 5, "abcde", 0, 4, 10);
4982 test("abcdefghijklmnopqrst", 10, 5, "abcde", 0, 5, 10);
4983 test("abcdefghijklmnopqrst", 10, 5, "abcde", 0, 6, 10);
4984 test("abcdefghijklmnopqrst", 10, 5, "abcde", 1, 0, 5);
4985 test("abcdefghijklmnopqrst", 10, 5, "abcde", 1, 1, 9);
4986 test("abcdefghijklmnopqrst", 10, 5, "abcde", 1, 2, 9);
4987 test("abcdefghijklmnopqrst", 10, 5, "abcde", 1, 3, 9);
4988 test("abcdefghijklmnopqrst", 10, 5, "abcde", 1, 4, 9);
4989 test("abcdefghijklmnopqrst", 10, 5, "abcde", 1, 5, 9);
4990 test("abcdefghijklmnopqrst", 10, 5, "abcde", 2, 0, 5);
4991 test("abcdefghijklmnopqrst", 10, 5, "abcde", 2, 1, 8);
4992 test("abcdefghijklmnopqrst", 10, 5, "abcde", 2, 2, 8);
4993 test("abcdefghijklmnopqrst", 10, 5, "abcde", 2, 3, 8);
4994 test("abcdefghijklmnopqrst", 10, 5, "abcde", 2, 4, 8);
4995 test("abcdefghijklmnopqrst", 10, 5, "abcde", 4, 0, 5);
4996 test("abcdefghijklmnopqrst", 10, 5, "abcde", 4, 1, 6);
4997 test("abcdefghijklmnopqrst", 10, 5, "abcde", 4, 2, 6);
4998 test("abcdefghijklmnopqrst", 10, 5, "abcde", 5, 0, 5);
4999 test("abcdefghijklmnopqrst", 10, 5, "abcde", 5, 1, 5);
5000 test("abcdefghijklmnopqrst", 10, 5, "abcde", 6, 0, 0);
5001 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 0, 0, 5);
5002 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 0, 1, 10);
5003 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 0, 5, 10);
5004 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 0, 9, 10);
5005 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 0, 10, 10);
5006 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 0, 11, 10);
5007 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 1, 0, 5);
5008 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 1, 1, 9);
5009 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 1, 4, 9);
5010 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 1, 8, 9);
5011 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 1, 9, 9);
5012 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 1, 10, 9);
5013 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 5, 0, 5);
5014 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 5, 1, 5);
5015 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 5, 2, 5);
5016 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 5, 4, 5);
5017 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 5, 5, 5);
5018 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 5, 6, 5);
5019 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 9, 0, 5);
5020 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 9, 1, 1);
5021 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 9, 2, 1);
5022 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 10, 0, 5);
5023 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 10, 1, 5);
5024 test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 11, 0, 0);
5025 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 0, 0, 5);
5026 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 0, 1, 10);
5027 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 0, 10, 10);
5028 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 0, 19, 10);
5029 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 0, 20, 10);
5030 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 0, 21, 10);
5031 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 1, 0, 5);
5032 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 1, 1, 9);
5033 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 1, 9, 9);
5034 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 1, 18, 9);
5035 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 1, 19, 9);
5036 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 1, 20, 9);
5037 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10, 0, 5);
5038 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10, 1, 4);
5039}
5040
5041void test48()
5042{
5043 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10, 5, 0);
5044 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10, 9, -4);
5045 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10, 10, -5);
5046 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10, 11, -5);
5047 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 19, 0, 5);
5048 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 19, 1, -9);
5049 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 19, 2, -9);
5050 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 20, 0, 5);
5051 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 20, 1, 5);
5052 test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 21, 0, 0);
5053 test("abcdefghijklmnopqrst", 10, 9, "", 0, 0, 9);
5054 test("abcdefghijklmnopqrst", 10, 9, "", 0, 1, 9);
5055 test("abcdefghijklmnopqrst", 10, 9, "", 1, 0, 0);
5056 test("abcdefghijklmnopqrst", 10, 9, "abcde", 0, 0, 9);
5057 test("abcdefghijklmnopqrst", 10, 9, "abcde", 0, 1, 10);
5058 test("abcdefghijklmnopqrst", 10, 9, "abcde", 0, 2, 10);
5059 test("abcdefghijklmnopqrst", 10, 9, "abcde", 0, 4, 10);
5060 test("abcdefghijklmnopqrst", 10, 9, "abcde", 0, 5, 10);
5061 test("abcdefghijklmnopqrst", 10, 9, "abcde", 0, 6, 10);
5062 test("abcdefghijklmnopqrst", 10, 9, "abcde", 1, 0, 9);
5063 test("abcdefghijklmnopqrst", 10, 9, "abcde", 1, 1, 9);
5064 test("abcdefghijklmnopqrst", 10, 9, "abcde", 1, 2, 9);
5065 test("abcdefghijklmnopqrst", 10, 9, "abcde", 1, 3, 9);
5066 test("abcdefghijklmnopqrst", 10, 9, "abcde", 1, 4, 9);
5067 test("abcdefghijklmnopqrst", 10, 9, "abcde", 1, 5, 9);
5068 test("abcdefghijklmnopqrst", 10, 9, "abcde", 2, 0, 9);
5069 test("abcdefghijklmnopqrst", 10, 9, "abcde", 2, 1, 8);
5070 test("abcdefghijklmnopqrst", 10, 9, "abcde", 2, 2, 8);
5071 test("abcdefghijklmnopqrst", 10, 9, "abcde", 2, 3, 8);
5072 test("abcdefghijklmnopqrst", 10, 9, "abcde", 2, 4, 8);
5073 test("abcdefghijklmnopqrst", 10, 9, "abcde", 4, 0, 9);
5074 test("abcdefghijklmnopqrst", 10, 9, "abcde", 4, 1, 6);
5075 test("abcdefghijklmnopqrst", 10, 9, "abcde", 4, 2, 6);
5076 test("abcdefghijklmnopqrst", 10, 9, "abcde", 5, 0, 9);
5077 test("abcdefghijklmnopqrst", 10, 9, "abcde", 5, 1, 9);
5078 test("abcdefghijklmnopqrst", 10, 9, "abcde", 6, 0, 0);
5079 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 0, 0, 9);
5080 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 0, 1, 10);
5081 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 0, 5, 10);
5082 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 0, 9, 10);
5083 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 0, 10, 10);
5084 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 0, 11, 10);
5085 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 1, 0, 9);
5086 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 1, 1, 9);
5087 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 1, 4, 9);
5088 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 1, 8, 9);
5089 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 1, 9, 9);
5090 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 1, 10, 9);
5091 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 5, 0, 9);
5092 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 5, 1, 5);
5093 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 5, 2, 5);
5094 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 5, 4, 5);
5095 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 5, 5, 5);
5096 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 5, 6, 5);
5097 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 9, 0, 9);
5098 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 9, 1, 1);
5099 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 9, 2, 1);
5100 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 10, 0, 9);
5101 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 10, 1, 9);
5102 test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 11, 0, 0);
5103 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 0, 0, 9);
5104 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 0, 1, 10);
5105 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 0, 10, 10);
5106 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 0, 19, 10);
5107 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 0, 20, 10);
5108 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 0, 21, 10);
5109 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 1, 0, 9);
5110 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 1, 1, 9);
5111 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 1, 9, 9);
5112 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 1, 18, 9);
5113 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 1, 19, 9);
5114 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 1, 20, 9);
5115 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10, 0, 9);
5116 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10, 1, 8);
5117 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10, 5, 4);
5118 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10, 9, 0);
5119 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10, 10, -1);
5120 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10, 11, -1);
5121 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 19, 0, 9);
5122 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 19, 1, -9);
5123 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 19, 2, -9);
5124 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 20, 0, 9);
5125 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 20, 1, 9);
5126 test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 21, 0, 0);
5127 test("abcdefghijklmnopqrst", 10, 10, "", 0, 0, 10);
5128 test("abcdefghijklmnopqrst", 10, 10, "", 0, 1, 10);
5129 test("abcdefghijklmnopqrst", 10, 10, "", 1, 0, 0);
5130 test("abcdefghijklmnopqrst", 10, 10, "abcde", 0, 0, 10);
5131 test("abcdefghijklmnopqrst", 10, 10, "abcde", 0, 1, 10);
5132 test("abcdefghijklmnopqrst", 10, 10, "abcde", 0, 2, 10);
5133 test("abcdefghijklmnopqrst", 10, 10, "abcde", 0, 4, 10);
5134 test("abcdefghijklmnopqrst", 10, 10, "abcde", 0, 5, 10);
5135 test("abcdefghijklmnopqrst", 10, 10, "abcde", 0, 6, 10);
5136 test("abcdefghijklmnopqrst", 10, 10, "abcde", 1, 0, 10);
5137 test("abcdefghijklmnopqrst", 10, 10, "abcde", 1, 1, 9);
5138 test("abcdefghijklmnopqrst", 10, 10, "abcde", 1, 2, 9);
5139 test("abcdefghijklmnopqrst", 10, 10, "abcde", 1, 3, 9);
5140 test("abcdefghijklmnopqrst", 10, 10, "abcde", 1, 4, 9);
5141 test("abcdefghijklmnopqrst", 10, 10, "abcde", 1, 5, 9);
5142 test("abcdefghijklmnopqrst", 10, 10, "abcde", 2, 0, 10);
5143}
5144
5145void test49()
5146{
5147 test("abcdefghijklmnopqrst", 10, 10, "abcde", 2, 1, 8);
5148 test("abcdefghijklmnopqrst", 10, 10, "abcde", 2, 2, 8);
5149 test("abcdefghijklmnopqrst", 10, 10, "abcde", 2, 3, 8);
5150 test("abcdefghijklmnopqrst", 10, 10, "abcde", 2, 4, 8);
5151 test("abcdefghijklmnopqrst", 10, 10, "abcde", 4, 0, 10);
5152 test("abcdefghijklmnopqrst", 10, 10, "abcde", 4, 1, 6);
5153 test("abcdefghijklmnopqrst", 10, 10, "abcde", 4, 2, 6);
5154 test("abcdefghijklmnopqrst", 10, 10, "abcde", 5, 0, 10);
5155 test("abcdefghijklmnopqrst", 10, 10, "abcde", 5, 1, 10);
5156 test("abcdefghijklmnopqrst", 10, 10, "abcde", 6, 0, 0);
5157 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 0, 0, 10);
5158 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 0, 1, 10);
5159 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 0, 5, 10);
5160 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 0, 9, 10);
5161 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 0, 10, 10);
5162 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 0, 11, 10);
5163 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 1, 0, 10);
5164 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 1, 1, 9);
5165 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 1, 4, 9);
5166 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 1, 8, 9);
5167 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 1, 9, 9);
5168 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 1, 10, 9);
5169 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 5, 0, 10);
5170 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 5, 1, 5);
5171 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 5, 2, 5);
5172 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 5, 4, 5);
5173 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 5, 5, 5);
5174 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 5, 6, 5);
5175 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 9, 0, 10);
5176 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 9, 1, 1);
5177 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 9, 2, 1);
5178 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 10, 0, 10);
5179 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 10, 1, 10);
5180 test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 11, 0, 0);
5181 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 0, 0, 10);
5182 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 0, 1, 10);
5183 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 0, 10, 10);
5184 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 0, 19, 10);
5185 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 0, 20, 10);
5186 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 0, 21, 10);
5187 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 1, 0, 10);
5188 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 1, 1, 9);
5189 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 1, 9, 9);
5190 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 1, 18, 9);
5191 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 1, 19, 9);
5192 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 1, 20, 9);
5193 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10, 0, 10);
5194 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10, 1, 9);
5195 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10, 5, 5);
5196 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10, 9, 1);
5197 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10, 10, 0);
5198 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10, 11, 0);
5199 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 19, 0, 10);
5200 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 19, 1, -9);
5201 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 19, 2, -9);
5202 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 20, 0, 10);
5203 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 20, 1, 10);
5204 test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 21, 0, 0);
5205 test("abcdefghijklmnopqrst", 10, 11, "", 0, 0, 10);
5206 test("abcdefghijklmnopqrst", 10, 11, "", 0, 1, 10);
5207 test("abcdefghijklmnopqrst", 10, 11, "", 1, 0, 0);
5208 test("abcdefghijklmnopqrst", 10, 11, "abcde", 0, 0, 10);
5209 test("abcdefghijklmnopqrst", 10, 11, "abcde", 0, 1, 10);
5210 test("abcdefghijklmnopqrst", 10, 11, "abcde", 0, 2, 10);
5211 test("abcdefghijklmnopqrst", 10, 11, "abcde", 0, 4, 10);
5212 test("abcdefghijklmnopqrst", 10, 11, "abcde", 0, 5, 10);
5213 test("abcdefghijklmnopqrst", 10, 11, "abcde", 0, 6, 10);
5214 test("abcdefghijklmnopqrst", 10, 11, "abcde", 1, 0, 10);
5215 test("abcdefghijklmnopqrst", 10, 11, "abcde", 1, 1, 9);
5216 test("abcdefghijklmnopqrst", 10, 11, "abcde", 1, 2, 9);
5217 test("abcdefghijklmnopqrst", 10, 11, "abcde", 1, 3, 9);
5218 test("abcdefghijklmnopqrst", 10, 11, "abcde", 1, 4, 9);
5219 test("abcdefghijklmnopqrst", 10, 11, "abcde", 1, 5, 9);
5220 test("abcdefghijklmnopqrst", 10, 11, "abcde", 2, 0, 10);
5221 test("abcdefghijklmnopqrst", 10, 11, "abcde", 2, 1, 8);
5222 test("abcdefghijklmnopqrst", 10, 11, "abcde", 2, 2, 8);
5223 test("abcdefghijklmnopqrst", 10, 11, "abcde", 2, 3, 8);
5224 test("abcdefghijklmnopqrst", 10, 11, "abcde", 2, 4, 8);
5225 test("abcdefghijklmnopqrst", 10, 11, "abcde", 4, 0, 10);
5226 test("abcdefghijklmnopqrst", 10, 11, "abcde", 4, 1, 6);
5227 test("abcdefghijklmnopqrst", 10, 11, "abcde", 4, 2, 6);
5228 test("abcdefghijklmnopqrst", 10, 11, "abcde", 5, 0, 10);
5229 test("abcdefghijklmnopqrst", 10, 11, "abcde", 5, 1, 10);
5230 test("abcdefghijklmnopqrst", 10, 11, "abcde", 6, 0, 0);
5231 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 0, 0, 10);
5232 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 0, 1, 10);
5233 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 0, 5, 10);
5234 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 0, 9, 10);
5235 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 0, 10, 10);
5236 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 0, 11, 10);
5237 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 1, 0, 10);
5238 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 1, 1, 9);
5239 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 1, 4, 9);
5240 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 1, 8, 9);
5241 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 1, 9, 9);
5242 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 1, 10, 9);
5243 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 5, 0, 10);
5244 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 5, 1, 5);
5245 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 5, 2, 5);
5246 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 5, 4, 5);
5247}
5248
5249void test50()
5250{
5251 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 5, 5, 5);
5252 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 5, 6, 5);
5253 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 9, 0, 10);
5254 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 9, 1, 1);
5255 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 9, 2, 1);
5256 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 10, 0, 10);
5257 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 10, 1, 10);
5258 test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 11, 0, 0);
5259 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 0, 0, 10);
5260 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 0, 1, 10);
5261 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 0, 10, 10);
5262 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 0, 19, 10);
5263 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 0, 20, 10);
5264 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 0, 21, 10);
5265 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 1, 0, 10);
5266 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 1, 1, 9);
5267 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 1, 9, 9);
5268 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 1, 18, 9);
5269 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 1, 19, 9);
5270 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 1, 20, 9);
5271 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10, 0, 10);
5272 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10, 1, 9);
5273 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10, 5, 5);
5274 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10, 9, 1);
5275 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10, 10, 0);
5276 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10, 11, 0);
5277 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 19, 0, 10);
5278 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 19, 1, -9);
5279 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 19, 2, -9);
5280 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 20, 0, 10);
5281 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 20, 1, 10);
5282 test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 21, 0, 0);
5283 test("abcdefghijklmnopqrst", 19, 0, "", 0, 0, 0);
5284 test("abcdefghijklmnopqrst", 19, 0, "", 0, 1, 0);
5285 test("abcdefghijklmnopqrst", 19, 0, "", 1, 0, 0);
5286 test("abcdefghijklmnopqrst", 19, 0, "abcde", 0, 0, 0);
5287 test("abcdefghijklmnopqrst", 19, 0, "abcde", 0, 1, -1);
5288 test("abcdefghijklmnopqrst", 19, 0, "abcde", 0, 2, -2);
5289 test("abcdefghijklmnopqrst", 19, 0, "abcde", 0, 4, -4);
5290 test("abcdefghijklmnopqrst", 19, 0, "abcde", 0, 5, -5);
5291 test("abcdefghijklmnopqrst", 19, 0, "abcde", 0, 6, -5);
5292 test("abcdefghijklmnopqrst", 19, 0, "abcde", 1, 0, 0);
5293 test("abcdefghijklmnopqrst", 19, 0, "abcde", 1, 1, -1);
5294 test("abcdefghijklmnopqrst", 19, 0, "abcde", 1, 2, -2);
5295 test("abcdefghijklmnopqrst", 19, 0, "abcde", 1, 3, -3);
5296 test("abcdefghijklmnopqrst", 19, 0, "abcde", 1, 4, -4);
5297 test("abcdefghijklmnopqrst", 19, 0, "abcde", 1, 5, -4);
5298 test("abcdefghijklmnopqrst", 19, 0, "abcde", 2, 0, 0);
5299 test("abcdefghijklmnopqrst", 19, 0, "abcde", 2, 1, -1);
5300 test("abcdefghijklmnopqrst", 19, 0, "abcde", 2, 2, -2);
5301 test("abcdefghijklmnopqrst", 19, 0, "abcde", 2, 3, -3);
5302 test("abcdefghijklmnopqrst", 19, 0, "abcde", 2, 4, -3);
5303 test("abcdefghijklmnopqrst", 19, 0, "abcde", 4, 0, 0);
5304 test("abcdefghijklmnopqrst", 19, 0, "abcde", 4, 1, -1);
5305 test("abcdefghijklmnopqrst", 19, 0, "abcde", 4, 2, -1);
5306 test("abcdefghijklmnopqrst", 19, 0, "abcde", 5, 0, 0);
5307 test("abcdefghijklmnopqrst", 19, 0, "abcde", 5, 1, 0);
5308 test("abcdefghijklmnopqrst", 19, 0, "abcde", 6, 0, 0);
5309 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 0, 0, 0);
5310 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 0, 1, -1);
5311 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 0, 5, -5);
5312 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 0, 9, -9);
5313 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 0, 10, -10);
5314 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 0, 11, -10);
5315 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 1, 0, 0);
5316 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 1, 1, -1);
5317 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 1, 4, -4);
5318 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 1, 8, -8);
5319 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 1, 9, -9);
5320 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 1, 10, -9);
5321 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 5, 0, 0);
5322 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 5, 1, -1);
5323 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 5, 2, -2);
5324 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 5, 4, -4);
5325 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 5, 5, -5);
5326 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 5, 6, -5);
5327 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 9, 0, 0);
5328 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 9, 1, -1);
5329 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 9, 2, -1);
5330 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 10, 0, 0);
5331 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 10, 1, 0);
5332 test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 11, 0, 0);
5333 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 0, 0, 0);
5334 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 0, 1, -1);
5335 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 0, 10, -10);
5336 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 0, 19, -19);
5337 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 0, 20, -20);
5338 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 0, 21, -20);
5339 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 1, 0, 0);
5340 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 1, 1, -1);
5341 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 1, 9, -9);
5342 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 1, 18, -18);
5343 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 1, 19, -19);
5344 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 1, 20, -19);
5345 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 10, 0, 0);
5346 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 10, 1, -1);
5347 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 10, 5, -5);
5348 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 10, 9, -9);
5349 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 10, 10, -10);
5350 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 10, 11, -10);
5351}
5352
5353void test51()
5354{
5355 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 19, 0, 0);
5356 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 19, 1, -1);
5357 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 19, 2, -1);
5358 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 20, 0, 0);
5359 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 20, 1, 0);
5360 test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 21, 0, 0);
5361 test("abcdefghijklmnopqrst", 19, 1, "", 0, 0, 1);
5362 test("abcdefghijklmnopqrst", 19, 1, "", 0, 1, 1);
5363 test("abcdefghijklmnopqrst", 19, 1, "", 1, 0, 0);
5364 test("abcdefghijklmnopqrst", 19, 1, "abcde", 0, 0, 1);
5365 test("abcdefghijklmnopqrst", 19, 1, "abcde", 0, 1, 19);
5366 test("abcdefghijklmnopqrst", 19, 1, "abcde", 0, 2, 19);
5367 test("abcdefghijklmnopqrst", 19, 1, "abcde", 0, 4, 19);
5368 test("abcdefghijklmnopqrst", 19, 1, "abcde", 0, 5, 19);
5369 test("abcdefghijklmnopqrst", 19, 1, "abcde", 0, 6, 19);
5370 test("abcdefghijklmnopqrst", 19, 1, "abcde", 1, 0, 1);
5371 test("abcdefghijklmnopqrst", 19, 1, "abcde", 1, 1, 18);
5372 test("abcdefghijklmnopqrst", 19, 1, "abcde", 1, 2, 18);
5373 test("abcdefghijklmnopqrst", 19, 1, "abcde", 1, 3, 18);
5374 test("abcdefghijklmnopqrst", 19, 1, "abcde", 1, 4, 18);
5375 test("abcdefghijklmnopqrst", 19, 1, "abcde", 1, 5, 18);
5376 test("abcdefghijklmnopqrst", 19, 1, "abcde", 2, 0, 1);
5377 test("abcdefghijklmnopqrst", 19, 1, "abcde", 2, 1, 17);
5378 test("abcdefghijklmnopqrst", 19, 1, "abcde", 2, 2, 17);
5379 test("abcdefghijklmnopqrst", 19, 1, "abcde", 2, 3, 17);
5380 test("abcdefghijklmnopqrst", 19, 1, "abcde", 2, 4, 17);
5381 test("abcdefghijklmnopqrst", 19, 1, "abcde", 4, 0, 1);
5382 test("abcdefghijklmnopqrst", 19, 1, "abcde", 4, 1, 15);
5383 test("abcdefghijklmnopqrst", 19, 1, "abcde", 4, 2, 15);
5384 test("abcdefghijklmnopqrst", 19, 1, "abcde", 5, 0, 1);
5385 test("abcdefghijklmnopqrst", 19, 1, "abcde", 5, 1, 1);
5386 test("abcdefghijklmnopqrst", 19, 1, "abcde", 6, 0, 0);
5387 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 0, 0, 1);
5388 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 0, 1, 19);
5389 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 0, 5, 19);
5390 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 0, 9, 19);
5391 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 0, 10, 19);
5392 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 0, 11, 19);
5393 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 1, 0, 1);
5394 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 1, 1, 18);
5395 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 1, 4, 18);
5396 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 1, 8, 18);
5397 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 1, 9, 18);
5398 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 1, 10, 18);
5399 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 5, 0, 1);
5400 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 5, 1, 14);
5401 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 5, 2, 14);
5402 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 5, 4, 14);
5403 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 5, 5, 14);
5404 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 5, 6, 14);
5405 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 9, 0, 1);
5406 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 9, 1, 10);
5407 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 9, 2, 10);
5408 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 10, 0, 1);
5409 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 10, 1, 1);
5410 test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 11, 0, 0);
5411 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 0, 0, 1);
5412 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 0, 1, 19);
5413 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 0, 10, 19);
5414 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 0, 19, 19);
5415 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 0, 20, 19);
5416 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 0, 21, 19);
5417 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 1, 0, 1);
5418 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 1, 1, 18);
5419 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 1, 9, 18);
5420 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 1, 18, 18);
5421 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 1, 19, 18);
5422 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 1, 20, 18);
5423 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 10, 0, 1);
5424 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 10, 1, 9);
5425 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 10, 5, 9);
5426 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 10, 9, 9);
5427 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 10, 10, 9);
5428 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 10, 11, 9);
5429 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 19, 0, 1);
5430 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 19, 1, 0);
5431 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 19, 2, 0);
5432 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 20, 0, 1);
5433 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 20, 1, 1);
5434 test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 21, 0, 0);
5435 test("abcdefghijklmnopqrst", 19, 2, "", 0, 0, 1);
5436 test("abcdefghijklmnopqrst", 19, 2, "", 0, 1, 1);
5437 test("abcdefghijklmnopqrst", 19, 2, "", 1, 0, 0);
5438 test("abcdefghijklmnopqrst", 19, 2, "abcde", 0, 0, 1);
5439 test("abcdefghijklmnopqrst", 19, 2, "abcde", 0, 1, 19);
5440 test("abcdefghijklmnopqrst", 19, 2, "abcde", 0, 2, 19);
5441 test("abcdefghijklmnopqrst", 19, 2, "abcde", 0, 4, 19);
5442 test("abcdefghijklmnopqrst", 19, 2, "abcde", 0, 5, 19);
5443 test("abcdefghijklmnopqrst", 19, 2, "abcde", 0, 6, 19);
5444 test("abcdefghijklmnopqrst", 19, 2, "abcde", 1, 0, 1);
5445 test("abcdefghijklmnopqrst", 19, 2, "abcde", 1, 1, 18);
5446 test("abcdefghijklmnopqrst", 19, 2, "abcde", 1, 2, 18);
5447 test("abcdefghijklmnopqrst", 19, 2, "abcde", 1, 3, 18);
5448 test("abcdefghijklmnopqrst", 19, 2, "abcde", 1, 4, 18);
5449 test("abcdefghijklmnopqrst", 19, 2, "abcde", 1, 5, 18);
5450 test("abcdefghijklmnopqrst", 19, 2, "abcde", 2, 0, 1);
5451 test("abcdefghijklmnopqrst", 19, 2, "abcde", 2, 1, 17);
5452 test("abcdefghijklmnopqrst", 19, 2, "abcde", 2, 2, 17);
5453 test("abcdefghijklmnopqrst", 19, 2, "abcde", 2, 3, 17);
5454 test("abcdefghijklmnopqrst", 19, 2, "abcde", 2, 4, 17);
5455}
5456
5457void test52()
5458{
5459 test("abcdefghijklmnopqrst", 19, 2, "abcde", 4, 0, 1);
5460 test("abcdefghijklmnopqrst", 19, 2, "abcde", 4, 1, 15);
5461 test("abcdefghijklmnopqrst", 19, 2, "abcde", 4, 2, 15);
5462 test("abcdefghijklmnopqrst", 19, 2, "abcde", 5, 0, 1);
5463 test("abcdefghijklmnopqrst", 19, 2, "abcde", 5, 1, 1);
5464 test("abcdefghijklmnopqrst", 19, 2, "abcde", 6, 0, 0);
5465 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 0, 0, 1);
5466 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 0, 1, 19);
5467 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 0, 5, 19);
5468 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 0, 9, 19);
5469 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 0, 10, 19);
5470 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 0, 11, 19);
5471 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 1, 0, 1);
5472 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 1, 1, 18);
5473 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 1, 4, 18);
5474 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 1, 8, 18);
5475 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 1, 9, 18);
5476 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 1, 10, 18);
5477 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 5, 0, 1);
5478 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 5, 1, 14);
5479 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 5, 2, 14);
5480 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 5, 4, 14);
5481 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 5, 5, 14);
5482 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 5, 6, 14);
5483 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 9, 0, 1);
5484 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 9, 1, 10);
5485 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 9, 2, 10);
5486 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 10, 0, 1);
5487 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 10, 1, 1);
5488 test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 11, 0, 0);
5489 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 0, 0, 1);
5490 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 0, 1, 19);
5491 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 0, 10, 19);
5492 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 0, 19, 19);
5493 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 0, 20, 19);
5494 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 0, 21, 19);
5495 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 1, 0, 1);
5496 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 1, 1, 18);
5497 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 1, 9, 18);
5498 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 1, 18, 18);
5499 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 1, 19, 18);
5500 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 1, 20, 18);
5501 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 10, 0, 1);
5502 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 10, 1, 9);
5503 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 10, 5, 9);
5504 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 10, 9, 9);
5505 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 10, 10, 9);
5506 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 10, 11, 9);
5507 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 19, 0, 1);
5508 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 19, 1, 0);
5509 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 19, 2, 0);
5510 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 20, 0, 1);
5511 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 20, 1, 1);
5512 test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 21, 0, 0);
5513 test("abcdefghijklmnopqrst", 20, 0, "", 0, 0, 0);
5514 test("abcdefghijklmnopqrst", 20, 0, "", 0, 1, 0);
5515 test("abcdefghijklmnopqrst", 20, 0, "", 1, 0, 0);
5516 test("abcdefghijklmnopqrst", 20, 0, "abcde", 0, 0, 0);
5517 test("abcdefghijklmnopqrst", 20, 0, "abcde", 0, 1, -1);
5518 test("abcdefghijklmnopqrst", 20, 0, "abcde", 0, 2, -2);
5519 test("abcdefghijklmnopqrst", 20, 0, "abcde", 0, 4, -4);
5520 test("abcdefghijklmnopqrst", 20, 0, "abcde", 0, 5, -5);
5521 test("abcdefghijklmnopqrst", 20, 0, "abcde", 0, 6, -5);
5522 test("abcdefghijklmnopqrst", 20, 0, "abcde", 1, 0, 0);
5523 test("abcdefghijklmnopqrst", 20, 0, "abcde", 1, 1, -1);
5524 test("abcdefghijklmnopqrst", 20, 0, "abcde", 1, 2, -2);
5525 test("abcdefghijklmnopqrst", 20, 0, "abcde", 1, 3, -3);
5526 test("abcdefghijklmnopqrst", 20, 0, "abcde", 1, 4, -4);
5527 test("abcdefghijklmnopqrst", 20, 0, "abcde", 1, 5, -4);
5528 test("abcdefghijklmnopqrst", 20, 0, "abcde", 2, 0, 0);
5529 test("abcdefghijklmnopqrst", 20, 0, "abcde", 2, 1, -1);
5530 test("abcdefghijklmnopqrst", 20, 0, "abcde", 2, 2, -2);
5531 test("abcdefghijklmnopqrst", 20, 0, "abcde", 2, 3, -3);
5532 test("abcdefghijklmnopqrst", 20, 0, "abcde", 2, 4, -3);
5533 test("abcdefghijklmnopqrst", 20, 0, "abcde", 4, 0, 0);
5534 test("abcdefghijklmnopqrst", 20, 0, "abcde", 4, 1, -1);
5535 test("abcdefghijklmnopqrst", 20, 0, "abcde", 4, 2, -1);
5536 test("abcdefghijklmnopqrst", 20, 0, "abcde", 5, 0, 0);
5537 test("abcdefghijklmnopqrst", 20, 0, "abcde", 5, 1, 0);
5538 test("abcdefghijklmnopqrst", 20, 0, "abcde", 6, 0, 0);
5539 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 0, 0, 0);
5540 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 0, 1, -1);
5541 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 0, 5, -5);
5542 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 0, 9, -9);
5543 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 0, 10, -10);
5544 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 0, 11, -10);
5545 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 1, 0, 0);
5546 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 1, 1, -1);
5547 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 1, 4, -4);
5548 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 1, 8, -8);
5549 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 1, 9, -9);
5550 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 1, 10, -9);
5551 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 5, 0, 0);
5552 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 5, 1, -1);
5553 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 5, 2, -2);
5554 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 5, 4, -4);
5555 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 5, 5, -5);
5556 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 5, 6, -5);
5557 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 9, 0, 0);
5558 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 9, 1, -1);
5559}
5560
5561void test53()
5562{
5563 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 9, 2, -1);
5564 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 10, 0, 0);
5565 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 10, 1, 0);
5566 test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 11, 0, 0);
5567 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 0, 0, 0);
5568 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 0, 1, -1);
5569 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 0, 10, -10);
5570 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 0, 19, -19);
5571 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 0, 20, -20);
5572 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 0, 21, -20);
5573 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 1, 0, 0);
5574 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 1, 1, -1);
5575 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 1, 9, -9);
5576 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 1, 18, -18);
5577 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 1, 19, -19);
5578 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 1, 20, -19);
5579 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 10, 0, 0);
5580 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 10, 1, -1);
5581 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 10, 5, -5);
5582 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 10, 9, -9);
5583 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 10, 10, -10);
5584 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 10, 11, -10);
5585 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 19, 0, 0);
5586 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 19, 1, -1);
5587 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 19, 2, -1);
5588 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 20, 0, 0);
5589 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 20, 1, 0);
5590 test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 21, 0, 0);
5591 test("abcdefghijklmnopqrst", 20, 1, "", 0, 0, 0);
5592 test("abcdefghijklmnopqrst", 20, 1, "", 0, 1, 0);
5593 test("abcdefghijklmnopqrst", 20, 1, "", 1, 0, 0);
5594 test("abcdefghijklmnopqrst", 20, 1, "abcde", 0, 0, 0);
5595 test("abcdefghijklmnopqrst", 20, 1, "abcde", 0, 1, -1);
5596 test("abcdefghijklmnopqrst", 20, 1, "abcde", 0, 2, -2);
5597 test("abcdefghijklmnopqrst", 20, 1, "abcde", 0, 4, -4);
5598 test("abcdefghijklmnopqrst", 20, 1, "abcde", 0, 5, -5);
5599 test("abcdefghijklmnopqrst", 20, 1, "abcde", 0, 6, -5);
5600 test("abcdefghijklmnopqrst", 20, 1, "abcde", 1, 0, 0);
5601 test("abcdefghijklmnopqrst", 20, 1, "abcde", 1, 1, -1);
5602 test("abcdefghijklmnopqrst", 20, 1, "abcde", 1, 2, -2);
5603 test("abcdefghijklmnopqrst", 20, 1, "abcde", 1, 3, -3);
5604 test("abcdefghijklmnopqrst", 20, 1, "abcde", 1, 4, -4);
5605 test("abcdefghijklmnopqrst", 20, 1, "abcde", 1, 5, -4);
5606 test("abcdefghijklmnopqrst", 20, 1, "abcde", 2, 0, 0);
5607 test("abcdefghijklmnopqrst", 20, 1, "abcde", 2, 1, -1);
5608 test("abcdefghijklmnopqrst", 20, 1, "abcde", 2, 2, -2);
5609 test("abcdefghijklmnopqrst", 20, 1, "abcde", 2, 3, -3);
5610 test("abcdefghijklmnopqrst", 20, 1, "abcde", 2, 4, -3);
5611 test("abcdefghijklmnopqrst", 20, 1, "abcde", 4, 0, 0);
5612 test("abcdefghijklmnopqrst", 20, 1, "abcde", 4, 1, -1);
5613 test("abcdefghijklmnopqrst", 20, 1, "abcde", 4, 2, -1);
5614 test("abcdefghijklmnopqrst", 20, 1, "abcde", 5, 0, 0);
5615 test("abcdefghijklmnopqrst", 20, 1, "abcde", 5, 1, 0);
5616 test("abcdefghijklmnopqrst", 20, 1, "abcde", 6, 0, 0);
5617 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 0, 0, 0);
5618 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 0, 1, -1);
5619 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 0, 5, -5);
5620 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 0, 9, -9);
5621 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 0, 10, -10);
5622 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 0, 11, -10);
5623 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 1, 0, 0);
5624 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 1, 1, -1);
5625 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 1, 4, -4);
5626 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 1, 8, -8);
5627 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 1, 9, -9);
5628 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 1, 10, -9);
5629 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 5, 0, 0);
5630 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 5, 1, -1);
5631 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 5, 2, -2);
5632 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 5, 4, -4);
5633 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 5, 5, -5);
5634 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 5, 6, -5);
5635 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 9, 0, 0);
5636 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 9, 1, -1);
5637 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 9, 2, -1);
5638 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 10, 0, 0);
5639 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 10, 1, 0);
5640 test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 11, 0, 0);
5641 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 0, 0, 0);
5642 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 0, 1, -1);
5643 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 0, 10, -10);
5644 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 0, 19, -19);
5645 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 0, 20, -20);
5646 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 0, 21, -20);
5647 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 1, 0, 0);
5648 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 1, 1, -1);
5649 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 1, 9, -9);
5650 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 1, 18, -18);
5651 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 1, 19, -19);
5652 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 1, 20, -19);
5653 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 10, 0, 0);
5654 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 10, 1, -1);
5655 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 10, 5, -5);
5656 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 10, 9, -9);
5657 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 10, 10, -10);
5658 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 10, 11, -10);
5659 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 19, 0, 0);
5660 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 19, 1, -1);
5661 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 19, 2, -1);
5662 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 20, 0, 0);
5663}
5664
5665void test54()
5666{
5667 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 20, 1, 0);
5668 test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 21, 0, 0);
5669 test("abcdefghijklmnopqrst", 21, 0, "", 0, 0, 0);
5670 test("abcdefghijklmnopqrst", 21, 0, "", 0, 1, 0);
5671 test("abcdefghijklmnopqrst", 21, 0, "", 1, 0, 0);
5672 test("abcdefghijklmnopqrst", 21, 0, "abcde", 0, 0, 0);
5673 test("abcdefghijklmnopqrst", 21, 0, "abcde", 0, 1, 0);
5674 test("abcdefghijklmnopqrst", 21, 0, "abcde", 0, 2, 0);
5675 test("abcdefghijklmnopqrst", 21, 0, "abcde", 0, 4, 0);
5676 test("abcdefghijklmnopqrst", 21, 0, "abcde", 0, 5, 0);
5677 test("abcdefghijklmnopqrst", 21, 0, "abcde", 0, 6, 0);
5678 test("abcdefghijklmnopqrst", 21, 0, "abcde", 1, 0, 0);
5679 test("abcdefghijklmnopqrst", 21, 0, "abcde", 1, 1, 0);
5680 test("abcdefghijklmnopqrst", 21, 0, "abcde", 1, 2, 0);
5681 test("abcdefghijklmnopqrst", 21, 0, "abcde", 1, 3, 0);
5682 test("abcdefghijklmnopqrst", 21, 0, "abcde", 1, 4, 0);
5683 test("abcdefghijklmnopqrst", 21, 0, "abcde", 1, 5, 0);
5684 test("abcdefghijklmnopqrst", 21, 0, "abcde", 2, 0, 0);
5685 test("abcdefghijklmnopqrst", 21, 0, "abcde", 2, 1, 0);
5686 test("abcdefghijklmnopqrst", 21, 0, "abcde", 2, 2, 0);
5687 test("abcdefghijklmnopqrst", 21, 0, "abcde", 2, 3, 0);
5688 test("abcdefghijklmnopqrst", 21, 0, "abcde", 2, 4, 0);
5689 test("abcdefghijklmnopqrst", 21, 0, "abcde", 4, 0, 0);
5690 test("abcdefghijklmnopqrst", 21, 0, "abcde", 4, 1, 0);
5691 test("abcdefghijklmnopqrst", 21, 0, "abcde", 4, 2, 0);
5692 test("abcdefghijklmnopqrst", 21, 0, "abcde", 5, 0, 0);
5693 test("abcdefghijklmnopqrst", 21, 0, "abcde", 5, 1, 0);
5694 test("abcdefghijklmnopqrst", 21, 0, "abcde", 6, 0, 0);
5695 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0, 0, 0);
5696 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0, 1, 0);
5697 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0, 5, 0);
5698 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0, 9, 0);
5699 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0, 10, 0);
5700 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0, 11, 0);
5701 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 1, 0, 0);
5702 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 1, 1, 0);
5703 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 1, 4, 0);
5704 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 1, 8, 0);
5705 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 1, 9, 0);
5706 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 1, 10, 0);
5707 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 5, 0, 0);
5708 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 5, 1, 0);
5709 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 5, 2, 0);
5710 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 5, 4, 0);
5711 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 5, 5, 0);
5712 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 5, 6, 0);
5713 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 9, 0, 0);
5714 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 9, 1, 0);
5715 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 9, 2, 0);
5716 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 10, 0, 0);
5717 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 10, 1, 0);
5718 test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 11, 0, 0);
5719 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0, 0, 0);
5720 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0, 1, 0);
5721 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0, 10, 0);
5722 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0, 19, 0);
5723 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0, 20, 0);
5724 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0, 21, 0);
5725 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 1, 0, 0);
5726 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 1, 1, 0);
5727 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 1, 9, 0);
5728 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 1, 18, 0);
5729 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 1, 19, 0);
5730 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 1, 20, 0);
5731 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 10, 0, 0);
5732 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 10, 1, 0);
5733 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 10, 5, 0);
5734 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 10, 9, 0);
5735 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 10, 10, 0);
5736 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 10, 11, 0);
5737 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 19, 0, 0);
5738 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 19, 1, 0);
5739 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 19, 2, 0);
5740 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 20, 0, 0);
5741 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 20, 1, 0);
5742 test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 21, 0, 0);
5743}
5744
5745
5746int main () {
5747 test0();
5748 test1();
5749 test2();
5750 test3();
5751 test4();
5752 test5();
5753 test6();
5754 test7();
5755 test8();
5756 test9();
5757 test10();
5758 test11();
5759 test12();
5760 test13();
5761 test14();
5762 test15();
5763 test16();
5764 test17();
5765 test18();
5766 test19();
5767 test20();
5768 test21();
5769 test22();
5770 test23();
5771 test24();
5772 test25();
5773 test26();
5774 test27();
5775 test28();
5776 test29();
5777 test30();
5778 test31();
5779 test32();
5780 test33();
5781 test34();
5782 test35();
5783 test36();
5784 test37();
5785 test38();
5786 test39();
5787 test40();
5788 test41();
5789 test42();
5790 test43();
5791 test44();
5792 test45();
5793 test46();
5794 test47();
5795 test48();
5796 test49();
5797 test50();
5798 test51();
5799 test52();
5800 test53();
5801 test54();
5802
5803
5804 {
5805 test("abcde", 5, 1, "", 0, 0, 0);
5806 test("abcde", 2, 4, "", 0, 0, 3);
5807 test("abcde", 2, 4, "abcde", 3, 4, -2);
5808 test("ABCde", 2, 4, "abcde", 2, 4, -1);
5809 }
5810
5811 {
5812 test(L"abcde", 5, 1, L"", 0, 0, 0);
5813 test(L"abcde", 2, 4, L"", 0, 0, 3);
5814 test(L"abcde", 2, 4, L"abcde", 3, 4, -2);
5815 test(L"ABCde", 2, 4, L"abcde", 2, 4, -1);
5816 }
5817
5818#if __cplusplus >= 201103L
5819 {
5820 test(u"abcde", 5, 1, u"", 0, 0, 0);
5821 test(u"abcde", 2, 4, u"", 0, 0, 3);
5822 test(u"abcde", 2, 4, u"abcde", 3, 4, -2);
5823 test(u"ABCde", 2, 4, u"abcde", 2, 4, -1);
5824 }
5825
5826 {
5827 test(U"abcde", 5, 1, U"", 0, 0, 0);
5828 test(U"abcde", 2, 4, U"", 0, 0, 3);
5829 test(U"abcde", 2, 4, U"abcde", 3, 4, -2);
5830 test(U"ABCde", 2, 4, U"abcde", 2, 4, -1);
5831 }
5832#endif
5833
5834#if _LIBCPP_STD_VER > 11
5835 {
5836 typedef std::experimental::basic_string_view<char, constexpr_char_traits<char>> SV;
5837 constexpr SV sv1 { "abcde", 5 };
5838 static_assert ( sv1.compare(5, 1, "", 0, 0) == 0, "" );
5839 static_assert ( sv1.compare(2, 4, "", 0, 0) == 1, "" );
5840 static_assert ( sv1.compare(2, 4, "abcde", 3, 4) == -1, "" );
5841 }
5842#endif
5843}