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

source code of libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_pointer_size.pass.cpp