size_size_T_size_size.pass.cpp revision 6ac8de0976b38229a71500386fb7a3db1ab5d3c7
1//===----------------------------------------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is dual licensed under the MIT and the University of Illinois Open 6// Source Licenses. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10// XFAIL: libcpp-no-exceptions 11// <string> 12 13// template <typename T> 14// int compare(size_type pos1, size_type n1, const T& t, 15// size_type pos2, size_type n2=npos) const; 16// 17// Mostly we're testing string_view here 18 19#include <string> 20#include <stdexcept> 21#include <cassert> 22 23#include "min_allocator.h" 24 25int sign(int x) 26{ 27 if (x == 0) 28 return 0; 29 if (x < 0) 30 return -1; 31 return 1; 32} 33 34template <class S, class SV> 35void 36test(const S& s, typename S::size_type pos1, typename S::size_type n1, 37 SV sv, typename S::size_type pos2, typename S::size_type n2, int x) 38{ 39 static_assert(!std::is_same<S, SV>::value, ""); 40 try 41 { 42 assert(sign(s.compare(pos1, n1, sv, pos2, n2)) == sign(x)); 43 assert(pos1 <= s.size()); 44 assert(pos2 <= sv.size()); 45 } 46 catch (const std::out_of_range&) 47 { 48 assert(pos1 > s.size() || pos2 > sv.size()); 49 } 50} 51 52template <class S, class SV> 53void 54test_npos(const S& s, typename S::size_type pos1, typename S::size_type n1, 55 SV sv, typename S::size_type pos2, int x) 56{ 57 static_assert(!std::is_same<S, SV>::value, ""); 58 try 59 { 60 assert(sign(s.compare(pos1, n1, sv, pos2)) == sign(x)); 61 assert(pos1 <= s.size()); 62 assert(pos2 <= sv.size()); 63 } 64 catch (const std::out_of_range&) 65 { 66 assert(pos1 > s.size() || pos2 > sv.size()); 67 } 68} 69 70template <class S, class SV> 71void test0() 72{ 73 test(S(""), 0, 0, SV(""), 0, 0, 0); 74 test(S(""), 0, 0, SV(""), 0, 1, 0); 75 test(S(""), 0, 0, SV(""), 1, 0, 0); 76 test(S(""), 0, 0, SV("abcde"), 0, 0, 0); 77 test(S(""), 0, 0, SV("abcde"), 0, 1, -1); 78 test(S(""), 0, 0, SV("abcde"), 0, 2, -2); 79 test(S(""), 0, 0, SV("abcde"), 0, 4, -4); 80 test(S(""), 0, 0, SV("abcde"), 0, 5, -5); 81 test(S(""), 0, 0, SV("abcde"), 0, 6, -5); 82 test(S(""), 0, 0, SV("abcde"), 1, 0, 0); 83 test(S(""), 0, 0, SV("abcde"), 1, 1, -1); 84 test(S(""), 0, 0, SV("abcde"), 1, 2, -2); 85 test(S(""), 0, 0, SV("abcde"), 1, 3, -3); 86 test(S(""), 0, 0, SV("abcde"), 1, 4, -4); 87 test(S(""), 0, 0, SV("abcde"), 1, 5, -4); 88 test(S(""), 0, 0, SV("abcde"), 2, 0, 0); 89 test(S(""), 0, 0, SV("abcde"), 2, 1, -1); 90 test(S(""), 0, 0, SV("abcde"), 2, 2, -2); 91 test(S(""), 0, 0, SV("abcde"), 2, 3, -3); 92 test(S(""), 0, 0, SV("abcde"), 2, 4, -3); 93 test(S(""), 0, 0, SV("abcde"), 4, 0, 0); 94 test(S(""), 0, 0, SV("abcde"), 4, 1, -1); 95 test(S(""), 0, 0, SV("abcde"), 4, 2, -1); 96 test(S(""), 0, 0, SV("abcde"), 5, 0, 0); 97 test(S(""), 0, 0, SV("abcde"), 5, 1, 0); 98 test(S(""), 0, 0, SV("abcde"), 6, 0, 0); 99 test(S(""), 0, 0, SV("abcdefghij"), 0, 0, 0); 100 test(S(""), 0, 0, SV("abcdefghij"), 0, 1, -1); 101 test(S(""), 0, 0, SV("abcdefghij"), 0, 5, -5); 102 test(S(""), 0, 0, SV("abcdefghij"), 0, 9, -9); 103 test(S(""), 0, 0, SV("abcdefghij"), 0, 10, -10); 104 test(S(""), 0, 0, SV("abcdefghij"), 0, 11, -10); 105 test(S(""), 0, 0, SV("abcdefghij"), 1, 0, 0); 106 test(S(""), 0, 0, SV("abcdefghij"), 1, 1, -1); 107 test(S(""), 0, 0, SV("abcdefghij"), 1, 4, -4); 108 test(S(""), 0, 0, SV("abcdefghij"), 1, 8, -8); 109 test(S(""), 0, 0, SV("abcdefghij"), 1, 9, -9); 110 test(S(""), 0, 0, SV("abcdefghij"), 1, 10, -9); 111 test(S(""), 0, 0, SV("abcdefghij"), 5, 0, 0); 112 test(S(""), 0, 0, SV("abcdefghij"), 5, 1, -1); 113 test(S(""), 0, 0, SV("abcdefghij"), 5, 2, -2); 114 test(S(""), 0, 0, SV("abcdefghij"), 5, 4, -4); 115 test(S(""), 0, 0, SV("abcdefghij"), 5, 5, -5); 116 test(S(""), 0, 0, SV("abcdefghij"), 5, 6, -5); 117 test(S(""), 0, 0, SV("abcdefghij"), 9, 0, 0); 118 test(S(""), 0, 0, SV("abcdefghij"), 9, 1, -1); 119 test(S(""), 0, 0, SV("abcdefghij"), 9, 2, -1); 120 test(S(""), 0, 0, SV("abcdefghij"), 10, 0, 0); 121 test(S(""), 0, 0, SV("abcdefghij"), 10, 1, 0); 122 test(S(""), 0, 0, SV("abcdefghij"), 11, 0, 0); 123 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); 124 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); 125 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); 126 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); 127 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); 128 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); 129 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); 130 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); 131 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); 132 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); 133 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); 134 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); 135 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); 136 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); 137 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); 138 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); 139 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); 140 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); 141 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); 142 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); 143 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); 144 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); 145 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); 146 test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); 147 test(S(""), 0, 1, SV(""), 0, 0, 0); 148 test(S(""), 0, 1, SV(""), 0, 1, 0); 149 test(S(""), 0, 1, SV(""), 1, 0, 0); 150 test(S(""), 0, 1, SV("abcde"), 0, 0, 0); 151 test(S(""), 0, 1, SV("abcde"), 0, 1, -1); 152 test(S(""), 0, 1, SV("abcde"), 0, 2, -2); 153 test(S(""), 0, 1, SV("abcde"), 0, 4, -4); 154 test(S(""), 0, 1, SV("abcde"), 0, 5, -5); 155 test(S(""), 0, 1, SV("abcde"), 0, 6, -5); 156 test(S(""), 0, 1, SV("abcde"), 1, 0, 0); 157 test(S(""), 0, 1, SV("abcde"), 1, 1, -1); 158 test(S(""), 0, 1, SV("abcde"), 1, 2, -2); 159 test(S(""), 0, 1, SV("abcde"), 1, 3, -3); 160 test(S(""), 0, 1, SV("abcde"), 1, 4, -4); 161 test(S(""), 0, 1, SV("abcde"), 1, 5, -4); 162 test(S(""), 0, 1, SV("abcde"), 2, 0, 0); 163 test(S(""), 0, 1, SV("abcde"), 2, 1, -1); 164 test(S(""), 0, 1, SV("abcde"), 2, 2, -2); 165 test(S(""), 0, 1, SV("abcde"), 2, 3, -3); 166 test(S(""), 0, 1, SV("abcde"), 2, 4, -3); 167 test(S(""), 0, 1, SV("abcde"), 4, 0, 0); 168 test(S(""), 0, 1, SV("abcde"), 4, 1, -1); 169 test(S(""), 0, 1, SV("abcde"), 4, 2, -1); 170 test(S(""), 0, 1, SV("abcde"), 5, 0, 0); 171 test(S(""), 0, 1, SV("abcde"), 5, 1, 0); 172 test(S(""), 0, 1, SV("abcde"), 6, 0, 0); 173} 174 175template <class S, class SV> 176void test1() 177{ 178 test(S(""), 0, 1, SV("abcdefghij"), 0, 0, 0); 179 test(S(""), 0, 1, SV("abcdefghij"), 0, 1, -1); 180 test(S(""), 0, 1, SV("abcdefghij"), 0, 5, -5); 181 test(S(""), 0, 1, SV("abcdefghij"), 0, 9, -9); 182 test(S(""), 0, 1, SV("abcdefghij"), 0, 10, -10); 183 test(S(""), 0, 1, SV("abcdefghij"), 0, 11, -10); 184 test(S(""), 0, 1, SV("abcdefghij"), 1, 0, 0); 185 test(S(""), 0, 1, SV("abcdefghij"), 1, 1, -1); 186 test(S(""), 0, 1, SV("abcdefghij"), 1, 4, -4); 187 test(S(""), 0, 1, SV("abcdefghij"), 1, 8, -8); 188 test(S(""), 0, 1, SV("abcdefghij"), 1, 9, -9); 189 test(S(""), 0, 1, SV("abcdefghij"), 1, 10, -9); 190 test(S(""), 0, 1, SV("abcdefghij"), 5, 0, 0); 191 test(S(""), 0, 1, SV("abcdefghij"), 5, 1, -1); 192 test(S(""), 0, 1, SV("abcdefghij"), 5, 2, -2); 193 test(S(""), 0, 1, SV("abcdefghij"), 5, 4, -4); 194 test(S(""), 0, 1, SV("abcdefghij"), 5, 5, -5); 195 test(S(""), 0, 1, SV("abcdefghij"), 5, 6, -5); 196 test(S(""), 0, 1, SV("abcdefghij"), 9, 0, 0); 197 test(S(""), 0, 1, SV("abcdefghij"), 9, 1, -1); 198 test(S(""), 0, 1, SV("abcdefghij"), 9, 2, -1); 199 test(S(""), 0, 1, SV("abcdefghij"), 10, 0, 0); 200 test(S(""), 0, 1, SV("abcdefghij"), 10, 1, 0); 201 test(S(""), 0, 1, SV("abcdefghij"), 11, 0, 0); 202 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 0, 0); 203 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 1, -1); 204 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 10, -10); 205 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 19, -19); 206 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 20, -20); 207 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 21, -20); 208 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 0, 0); 209 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); 210 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 9, -9); 211 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 18, -18); 212 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 19, -19); 213 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 20, -19); 214 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 0, 0); 215 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 1, -1); 216 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 5, -5); 217 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); 218 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); 219 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); 220 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 19, 0, 0); 221 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 19, 1, -1); 222 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 19, 2, -1); 223 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 20, 0, 0); 224 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 20, 1, 0); 225 test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); 226 test(S(""), 1, 0, SV(""), 0, 0, 0); 227 test(S(""), 1, 0, SV(""), 0, 1, 0); 228 test(S(""), 1, 0, SV(""), 1, 0, 0); 229 test(S(""), 1, 0, SV("abcde"), 0, 0, 0); 230 test(S(""), 1, 0, SV("abcde"), 0, 1, 0); 231 test(S(""), 1, 0, SV("abcde"), 0, 2, 0); 232 test(S(""), 1, 0, SV("abcde"), 0, 4, 0); 233 test(S(""), 1, 0, SV("abcde"), 0, 5, 0); 234 test(S(""), 1, 0, SV("abcde"), 0, 6, 0); 235 test(S(""), 1, 0, SV("abcde"), 1, 0, 0); 236 test(S(""), 1, 0, SV("abcde"), 1, 1, 0); 237 test(S(""), 1, 0, SV("abcde"), 1, 2, 0); 238 test(S(""), 1, 0, SV("abcde"), 1, 3, 0); 239 test(S(""), 1, 0, SV("abcde"), 1, 4, 0); 240 test(S(""), 1, 0, SV("abcde"), 1, 5, 0); 241 test(S(""), 1, 0, SV("abcde"), 2, 0, 0); 242 test(S(""), 1, 0, SV("abcde"), 2, 1, 0); 243 test(S(""), 1, 0, SV("abcde"), 2, 2, 0); 244 test(S(""), 1, 0, SV("abcde"), 2, 3, 0); 245 test(S(""), 1, 0, SV("abcde"), 2, 4, 0); 246 test(S(""), 1, 0, SV("abcde"), 4, 0, 0); 247 test(S(""), 1, 0, SV("abcde"), 4, 1, 0); 248 test(S(""), 1, 0, SV("abcde"), 4, 2, 0); 249 test(S(""), 1, 0, SV("abcde"), 5, 0, 0); 250 test(S(""), 1, 0, SV("abcde"), 5, 1, 0); 251 test(S(""), 1, 0, SV("abcde"), 6, 0, 0); 252 test(S(""), 1, 0, SV("abcdefghij"), 0, 0, 0); 253 test(S(""), 1, 0, SV("abcdefghij"), 0, 1, 0); 254 test(S(""), 1, 0, SV("abcdefghij"), 0, 5, 0); 255 test(S(""), 1, 0, SV("abcdefghij"), 0, 9, 0); 256 test(S(""), 1, 0, SV("abcdefghij"), 0, 10, 0); 257 test(S(""), 1, 0, SV("abcdefghij"), 0, 11, 0); 258 test(S(""), 1, 0, SV("abcdefghij"), 1, 0, 0); 259 test(S(""), 1, 0, SV("abcdefghij"), 1, 1, 0); 260 test(S(""), 1, 0, SV("abcdefghij"), 1, 4, 0); 261 test(S(""), 1, 0, SV("abcdefghij"), 1, 8, 0); 262 test(S(""), 1, 0, SV("abcdefghij"), 1, 9, 0); 263 test(S(""), 1, 0, SV("abcdefghij"), 1, 10, 0); 264 test(S(""), 1, 0, SV("abcdefghij"), 5, 0, 0); 265 test(S(""), 1, 0, SV("abcdefghij"), 5, 1, 0); 266 test(S(""), 1, 0, SV("abcdefghij"), 5, 2, 0); 267 test(S(""), 1, 0, SV("abcdefghij"), 5, 4, 0); 268 test(S(""), 1, 0, SV("abcdefghij"), 5, 5, 0); 269 test(S(""), 1, 0, SV("abcdefghij"), 5, 6, 0); 270 test(S(""), 1, 0, SV("abcdefghij"), 9, 0, 0); 271 test(S(""), 1, 0, SV("abcdefghij"), 9, 1, 0); 272 test(S(""), 1, 0, SV("abcdefghij"), 9, 2, 0); 273 test(S(""), 1, 0, SV("abcdefghij"), 10, 0, 0); 274 test(S(""), 1, 0, SV("abcdefghij"), 10, 1, 0); 275 test(S(""), 1, 0, SV("abcdefghij"), 11, 0, 0); 276 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); 277 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 1, 0); 278} 279 280template <class S, class SV> 281void test2() 282{ 283 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 10, 0); 284 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 19, 0); 285 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 20, 0); 286 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 21, 0); 287 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); 288 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 1, 0); 289 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 9, 0); 290 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 18, 0); 291 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 19, 0); 292 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 20, 0); 293 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); 294 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 1, 0); 295 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 5, 0); 296 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 9, 0); 297 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 10, 0); 298 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 11, 0); 299 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); 300 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 19, 1, 0); 301 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 19, 2, 0); 302 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); 303 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); 304 test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); 305 test(S("abcde"), 0, 0, SV(""), 0, 0, 0); 306 test(S("abcde"), 0, 0, SV(""), 0, 1, 0); 307 test(S("abcde"), 0, 0, SV(""), 1, 0, 0); 308 test(S("abcde"), 0, 0, SV("abcde"), 0, 0, 0); 309 test(S("abcde"), 0, 0, SV("abcde"), 0, 1, -1); 310 test(S("abcde"), 0, 0, SV("abcde"), 0, 2, -2); 311 test(S("abcde"), 0, 0, SV("abcde"), 0, 4, -4); 312 test(S("abcde"), 0, 0, SV("abcde"), 0, 5, -5); 313 test(S("abcde"), 0, 0, SV("abcde"), 0, 6, -5); 314 test(S("abcde"), 0, 0, SV("abcde"), 1, 0, 0); 315 test(S("abcde"), 0, 0, SV("abcde"), 1, 1, -1); 316 test(S("abcde"), 0, 0, SV("abcde"), 1, 2, -2); 317 test(S("abcde"), 0, 0, SV("abcde"), 1, 3, -3); 318 test(S("abcde"), 0, 0, SV("abcde"), 1, 4, -4); 319 test(S("abcde"), 0, 0, SV("abcde"), 1, 5, -4); 320 test(S("abcde"), 0, 0, SV("abcde"), 2, 0, 0); 321 test(S("abcde"), 0, 0, SV("abcde"), 2, 1, -1); 322 test(S("abcde"), 0, 0, SV("abcde"), 2, 2, -2); 323 test(S("abcde"), 0, 0, SV("abcde"), 2, 3, -3); 324 test(S("abcde"), 0, 0, SV("abcde"), 2, 4, -3); 325 test(S("abcde"), 0, 0, SV("abcde"), 4, 0, 0); 326 test(S("abcde"), 0, 0, SV("abcde"), 4, 1, -1); 327 test(S("abcde"), 0, 0, SV("abcde"), 4, 2, -1); 328 test(S("abcde"), 0, 0, SV("abcde"), 5, 0, 0); 329 test(S("abcde"), 0, 0, SV("abcde"), 5, 1, 0); 330 test(S("abcde"), 0, 0, SV("abcde"), 6, 0, 0); 331 test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 0, 0); 332 test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 1, -1); 333 test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 5, -5); 334 test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 9, -9); 335 test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 10, -10); 336 test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 11, -10); 337 test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 0, 0); 338 test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 1, -1); 339 test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 4, -4); 340 test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 8, -8); 341 test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 9, -9); 342 test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 10, -9); 343 test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 0, 0); 344 test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 1, -1); 345 test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 2, -2); 346 test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 4, -4); 347 test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 5, -5); 348 test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 6, -5); 349 test(S("abcde"), 0, 0, SV("abcdefghij"), 9, 0, 0); 350 test(S("abcde"), 0, 0, SV("abcdefghij"), 9, 1, -1); 351 test(S("abcde"), 0, 0, SV("abcdefghij"), 9, 2, -1); 352 test(S("abcde"), 0, 0, SV("abcdefghij"), 10, 0, 0); 353 test(S("abcde"), 0, 0, SV("abcdefghij"), 10, 1, 0); 354 test(S("abcde"), 0, 0, SV("abcdefghij"), 11, 0, 0); 355 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); 356 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); 357 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); 358 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); 359 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); 360 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); 361 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); 362 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); 363 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); 364 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); 365 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); 366 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); 367 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); 368 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); 369 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); 370 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); 371 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); 372 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); 373 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); 374 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); 375 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); 376 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); 377 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); 378 test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); 379 test(S("abcde"), 0, 1, SV(""), 0, 0, 1); 380 test(S("abcde"), 0, 1, SV(""), 0, 1, 1); 381 test(S("abcde"), 0, 1, SV(""), 1, 0, 0); 382 test(S("abcde"), 0, 1, SV("abcde"), 0, 0, 1); 383} 384 385template <class S, class SV> 386void test3() 387{ 388 test(S("abcde"), 0, 1, SV("abcde"), 0, 1, 0); 389 test(S("abcde"), 0, 1, SV("abcde"), 0, 2, -1); 390 test(S("abcde"), 0, 1, SV("abcde"), 0, 4, -3); 391 test(S("abcde"), 0, 1, SV("abcde"), 0, 5, -4); 392 test(S("abcde"), 0, 1, SV("abcde"), 0, 6, -4); 393 test(S("abcde"), 0, 1, SV("abcde"), 1, 0, 1); 394 test(S("abcde"), 0, 1, SV("abcde"), 1, 1, -1); 395 test(S("abcde"), 0, 1, SV("abcde"), 1, 2, -1); 396 test(S("abcde"), 0, 1, SV("abcde"), 1, 3, -1); 397 test(S("abcde"), 0, 1, SV("abcde"), 1, 4, -1); 398 test(S("abcde"), 0, 1, SV("abcde"), 1, 5, -1); 399 test(S("abcde"), 0, 1, SV("abcde"), 2, 0, 1); 400 test(S("abcde"), 0, 1, SV("abcde"), 2, 1, -2); 401 test(S("abcde"), 0, 1, SV("abcde"), 2, 2, -2); 402 test(S("abcde"), 0, 1, SV("abcde"), 2, 3, -2); 403 test(S("abcde"), 0, 1, SV("abcde"), 2, 4, -2); 404 test(S("abcde"), 0, 1, SV("abcde"), 4, 0, 1); 405 test(S("abcde"), 0, 1, SV("abcde"), 4, 1, -4); 406 test(S("abcde"), 0, 1, SV("abcde"), 4, 2, -4); 407 test(S("abcde"), 0, 1, SV("abcde"), 5, 0, 1); 408 test(S("abcde"), 0, 1, SV("abcde"), 5, 1, 1); 409 test(S("abcde"), 0, 1, SV("abcde"), 6, 0, 0); 410 test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 0, 1); 411 test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 1, 0); 412 test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 5, -4); 413 test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 9, -8); 414 test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 10, -9); 415 test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 11, -9); 416 test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 0, 1); 417 test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 1, -1); 418 test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 4, -1); 419 test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 8, -1); 420 test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 9, -1); 421 test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 10, -1); 422 test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 0, 1); 423 test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 1, -5); 424 test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 2, -5); 425 test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 4, -5); 426 test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 5, -5); 427 test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 6, -5); 428 test(S("abcde"), 0, 1, SV("abcdefghij"), 9, 0, 1); 429 test(S("abcde"), 0, 1, SV("abcdefghij"), 9, 1, -9); 430 test(S("abcde"), 0, 1, SV("abcdefghij"), 9, 2, -9); 431 test(S("abcde"), 0, 1, SV("abcdefghij"), 10, 0, 1); 432 test(S("abcde"), 0, 1, SV("abcdefghij"), 10, 1, 1); 433 test(S("abcde"), 0, 1, SV("abcdefghij"), 11, 0, 0); 434 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); 435 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 1, 0); 436 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 10, -9); 437 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 19, -18); 438 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 20, -19); 439 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 21, -19); 440 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); 441 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); 442 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 9, -1); 443 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 18, -1); 444 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 19, -1); 445 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 20, -1); 446 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); 447 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 1, -10); 448 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 5, -10); 449 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 9, -10); 450 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); 451 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); 452 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); 453 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 1, -19); 454 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 2, -19); 455 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); 456 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); 457 test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); 458 test(S("abcde"), 0, 2, SV(""), 0, 0, 2); 459 test(S("abcde"), 0, 2, SV(""), 0, 1, 2); 460 test(S("abcde"), 0, 2, SV(""), 1, 0, 0); 461 test(S("abcde"), 0, 2, SV("abcde"), 0, 0, 2); 462 test(S("abcde"), 0, 2, SV("abcde"), 0, 1, 1); 463 test(S("abcde"), 0, 2, SV("abcde"), 0, 2, 0); 464 test(S("abcde"), 0, 2, SV("abcde"), 0, 4, -2); 465 test(S("abcde"), 0, 2, SV("abcde"), 0, 5, -3); 466 test(S("abcde"), 0, 2, SV("abcde"), 0, 6, -3); 467 test(S("abcde"), 0, 2, SV("abcde"), 1, 0, 2); 468 test(S("abcde"), 0, 2, SV("abcde"), 1, 1, -1); 469 test(S("abcde"), 0, 2, SV("abcde"), 1, 2, -1); 470 test(S("abcde"), 0, 2, SV("abcde"), 1, 3, -1); 471 test(S("abcde"), 0, 2, SV("abcde"), 1, 4, -1); 472 test(S("abcde"), 0, 2, SV("abcde"), 1, 5, -1); 473 test(S("abcde"), 0, 2, SV("abcde"), 2, 0, 2); 474 test(S("abcde"), 0, 2, SV("abcde"), 2, 1, -2); 475 test(S("abcde"), 0, 2, SV("abcde"), 2, 2, -2); 476 test(S("abcde"), 0, 2, SV("abcde"), 2, 3, -2); 477 test(S("abcde"), 0, 2, SV("abcde"), 2, 4, -2); 478 test(S("abcde"), 0, 2, SV("abcde"), 4, 0, 2); 479 test(S("abcde"), 0, 2, SV("abcde"), 4, 1, -4); 480 test(S("abcde"), 0, 2, SV("abcde"), 4, 2, -4); 481 test(S("abcde"), 0, 2, SV("abcde"), 5, 0, 2); 482 test(S("abcde"), 0, 2, SV("abcde"), 5, 1, 2); 483 test(S("abcde"), 0, 2, SV("abcde"), 6, 0, 0); 484 test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 0, 2); 485 test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 1, 1); 486 test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 5, -3); 487 test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 9, -7); 488} 489 490template <class S, class SV> 491void test4() 492{ 493 test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 10, -8); 494 test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 11, -8); 495 test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 0, 2); 496 test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 1, -1); 497 test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 4, -1); 498 test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 8, -1); 499 test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 9, -1); 500 test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 10, -1); 501 test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 0, 2); 502 test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 1, -5); 503 test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 2, -5); 504 test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 4, -5); 505 test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 5, -5); 506 test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 6, -5); 507 test(S("abcde"), 0, 2, SV("abcdefghij"), 9, 0, 2); 508 test(S("abcde"), 0, 2, SV("abcdefghij"), 9, 1, -9); 509 test(S("abcde"), 0, 2, SV("abcdefghij"), 9, 2, -9); 510 test(S("abcde"), 0, 2, SV("abcdefghij"), 10, 0, 2); 511 test(S("abcde"), 0, 2, SV("abcdefghij"), 10, 1, 2); 512 test(S("abcde"), 0, 2, SV("abcdefghij"), 11, 0, 0); 513 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 0, 2); 514 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 1, 1); 515 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 10, -8); 516 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 19, -17); 517 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 20, -18); 518 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 21, -18); 519 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 0, 2); 520 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 1, -1); 521 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 9, -1); 522 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 18, -1); 523 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 19, -1); 524 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 20, -1); 525 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 0, 2); 526 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 1, -10); 527 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 5, -10); 528 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 9, -10); 529 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 10, -10); 530 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 11, -10); 531 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 19, 0, 2); 532 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 19, 1, -19); 533 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 19, 2, -19); 534 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 20, 0, 2); 535 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 20, 1, 2); 536 test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); 537 test(S("abcde"), 0, 4, SV(""), 0, 0, 4); 538 test(S("abcde"), 0, 4, SV(""), 0, 1, 4); 539 test(S("abcde"), 0, 4, SV(""), 1, 0, 0); 540 test(S("abcde"), 0, 4, SV("abcde"), 0, 0, 4); 541 test(S("abcde"), 0, 4, SV("abcde"), 0, 1, 3); 542 test(S("abcde"), 0, 4, SV("abcde"), 0, 2, 2); 543 test(S("abcde"), 0, 4, SV("abcde"), 0, 4, 0); 544 test(S("abcde"), 0, 4, SV("abcde"), 0, 5, -1); 545 test(S("abcde"), 0, 4, SV("abcde"), 0, 6, -1); 546 test(S("abcde"), 0, 4, SV("abcde"), 1, 0, 4); 547 test(S("abcde"), 0, 4, SV("abcde"), 1, 1, -1); 548 test(S("abcde"), 0, 4, SV("abcde"), 1, 2, -1); 549 test(S("abcde"), 0, 4, SV("abcde"), 1, 3, -1); 550 test(S("abcde"), 0, 4, SV("abcde"), 1, 4, -1); 551 test(S("abcde"), 0, 4, SV("abcde"), 1, 5, -1); 552 test(S("abcde"), 0, 4, SV("abcde"), 2, 0, 4); 553 test(S("abcde"), 0, 4, SV("abcde"), 2, 1, -2); 554 test(S("abcde"), 0, 4, SV("abcde"), 2, 2, -2); 555 test(S("abcde"), 0, 4, SV("abcde"), 2, 3, -2); 556 test(S("abcde"), 0, 4, SV("abcde"), 2, 4, -2); 557 test(S("abcde"), 0, 4, SV("abcde"), 4, 0, 4); 558 test(S("abcde"), 0, 4, SV("abcde"), 4, 1, -4); 559 test(S("abcde"), 0, 4, SV("abcde"), 4, 2, -4); 560 test(S("abcde"), 0, 4, SV("abcde"), 5, 0, 4); 561 test(S("abcde"), 0, 4, SV("abcde"), 5, 1, 4); 562 test(S("abcde"), 0, 4, SV("abcde"), 6, 0, 0); 563 test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 0, 4); 564 test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 1, 3); 565 test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 5, -1); 566 test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 9, -5); 567 test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 10, -6); 568 test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 11, -6); 569 test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 0, 4); 570 test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 1, -1); 571 test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 4, -1); 572 test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 8, -1); 573 test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 9, -1); 574 test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 10, -1); 575 test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 0, 4); 576 test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 1, -5); 577 test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 2, -5); 578 test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 4, -5); 579 test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 5, -5); 580 test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 6, -5); 581 test(S("abcde"), 0, 4, SV("abcdefghij"), 9, 0, 4); 582 test(S("abcde"), 0, 4, SV("abcdefghij"), 9, 1, -9); 583 test(S("abcde"), 0, 4, SV("abcdefghij"), 9, 2, -9); 584 test(S("abcde"), 0, 4, SV("abcdefghij"), 10, 0, 4); 585 test(S("abcde"), 0, 4, SV("abcdefghij"), 10, 1, 4); 586 test(S("abcde"), 0, 4, SV("abcdefghij"), 11, 0, 0); 587 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 0, 4); 588 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 1, 3); 589 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 10, -6); 590 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 19, -15); 591 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 20, -16); 592 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 21, -16); 593} 594 595template <class S, class SV> 596void test5() 597{ 598 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 0, 4); 599 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 1, -1); 600 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 9, -1); 601 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 18, -1); 602 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 19, -1); 603 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 20, -1); 604 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 0, 4); 605 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 1, -10); 606 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 5, -10); 607 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 9, -10); 608 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 10, -10); 609 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 11, -10); 610 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 19, 0, 4); 611 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 19, 1, -19); 612 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 19, 2, -19); 613 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 20, 0, 4); 614 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 20, 1, 4); 615 test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 21, 0, 0); 616 test(S("abcde"), 0, 5, SV(""), 0, 0, 5); 617 test(S("abcde"), 0, 5, SV(""), 0, 1, 5); 618 test(S("abcde"), 0, 5, SV(""), 1, 0, 0); 619 test(S("abcde"), 0, 5, SV("abcde"), 0, 0, 5); 620 test(S("abcde"), 0, 5, SV("abcde"), 0, 1, 4); 621 test(S("abcde"), 0, 5, SV("abcde"), 0, 2, 3); 622 test(S("abcde"), 0, 5, SV("abcde"), 0, 4, 1); 623 test(S("abcde"), 0, 5, SV("abcde"), 0, 5, 0); 624 test(S("abcde"), 0, 5, SV("abcde"), 0, 6, 0); 625 test(S("abcde"), 0, 5, SV("abcde"), 1, 0, 5); 626 test(S("abcde"), 0, 5, SV("abcde"), 1, 1, -1); 627 test(S("abcde"), 0, 5, SV("abcde"), 1, 2, -1); 628 test(S("abcde"), 0, 5, SV("abcde"), 1, 3, -1); 629 test(S("abcde"), 0, 5, SV("abcde"), 1, 4, -1); 630 test(S("abcde"), 0, 5, SV("abcde"), 1, 5, -1); 631 test(S("abcde"), 0, 5, SV("abcde"), 2, 0, 5); 632 test(S("abcde"), 0, 5, SV("abcde"), 2, 1, -2); 633 test(S("abcde"), 0, 5, SV("abcde"), 2, 2, -2); 634 test(S("abcde"), 0, 5, SV("abcde"), 2, 3, -2); 635 test(S("abcde"), 0, 5, SV("abcde"), 2, 4, -2); 636 test(S("abcde"), 0, 5, SV("abcde"), 4, 0, 5); 637 test(S("abcde"), 0, 5, SV("abcde"), 4, 1, -4); 638 test(S("abcde"), 0, 5, SV("abcde"), 4, 2, -4); 639 test(S("abcde"), 0, 5, SV("abcde"), 5, 0, 5); 640 test(S("abcde"), 0, 5, SV("abcde"), 5, 1, 5); 641 test(S("abcde"), 0, 5, SV("abcde"), 6, 0, 0); 642 test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 0, 5); 643 test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 1, 4); 644 test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 5, 0); 645 test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 9, -4); 646 test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 10, -5); 647 test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 11, -5); 648 test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 0, 5); 649 test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 1, -1); 650 test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 4, -1); 651 test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 8, -1); 652 test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 9, -1); 653 test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 10, -1); 654 test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 0, 5); 655 test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 1, -5); 656 test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 2, -5); 657 test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 4, -5); 658 test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 5, -5); 659 test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 6, -5); 660 test(S("abcde"), 0, 5, SV("abcdefghij"), 9, 0, 5); 661 test(S("abcde"), 0, 5, SV("abcdefghij"), 9, 1, -9); 662 test(S("abcde"), 0, 5, SV("abcdefghij"), 9, 2, -9); 663 test(S("abcde"), 0, 5, SV("abcdefghij"), 10, 0, 5); 664 test(S("abcde"), 0, 5, SV("abcdefghij"), 10, 1, 5); 665 test(S("abcde"), 0, 5, SV("abcdefghij"), 11, 0, 0); 666 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 0, 5); 667 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 1, 4); 668 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 10, -5); 669 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 19, -14); 670 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 20, -15); 671 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 21, -15); 672 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 0, 5); 673 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 1, -1); 674 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 9, -1); 675 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 18, -1); 676 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 19, -1); 677 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 20, -1); 678 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 0, 5); 679 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 1, -10); 680 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 5, -10); 681 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 9, -10); 682 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 10, -10); 683 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 11, -10); 684 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 0, 5); 685 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 1, -19); 686 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 2, -19); 687 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 20, 0, 5); 688 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 20, 1, 5); 689 test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 21, 0, 0); 690 test(S("abcde"), 0, 6, SV(""), 0, 0, 5); 691 test(S("abcde"), 0, 6, SV(""), 0, 1, 5); 692 test(S("abcde"), 0, 6, SV(""), 1, 0, 0); 693 test(S("abcde"), 0, 6, SV("abcde"), 0, 0, 5); 694 test(S("abcde"), 0, 6, SV("abcde"), 0, 1, 4); 695 test(S("abcde"), 0, 6, SV("abcde"), 0, 2, 3); 696 test(S("abcde"), 0, 6, SV("abcde"), 0, 4, 1); 697 test(S("abcde"), 0, 6, SV("abcde"), 0, 5, 0); 698} 699 700template <class S, class SV> 701void test6() 702{ 703 test(S("abcde"), 0, 6, SV("abcde"), 0, 6, 0); 704 test(S("abcde"), 0, 6, SV("abcde"), 1, 0, 5); 705 test(S("abcde"), 0, 6, SV("abcde"), 1, 1, -1); 706 test(S("abcde"), 0, 6, SV("abcde"), 1, 2, -1); 707 test(S("abcde"), 0, 6, SV("abcde"), 1, 3, -1); 708 test(S("abcde"), 0, 6, SV("abcde"), 1, 4, -1); 709 test(S("abcde"), 0, 6, SV("abcde"), 1, 5, -1); 710 test(S("abcde"), 0, 6, SV("abcde"), 2, 0, 5); 711 test(S("abcde"), 0, 6, SV("abcde"), 2, 1, -2); 712 test(S("abcde"), 0, 6, SV("abcde"), 2, 2, -2); 713 test(S("abcde"), 0, 6, SV("abcde"), 2, 3, -2); 714 test(S("abcde"), 0, 6, SV("abcde"), 2, 4, -2); 715 test(S("abcde"), 0, 6, SV("abcde"), 4, 0, 5); 716 test(S("abcde"), 0, 6, SV("abcde"), 4, 1, -4); 717 test(S("abcde"), 0, 6, SV("abcde"), 4, 2, -4); 718 test(S("abcde"), 0, 6, SV("abcde"), 5, 0, 5); 719 test(S("abcde"), 0, 6, SV("abcde"), 5, 1, 5); 720 test(S("abcde"), 0, 6, SV("abcde"), 6, 0, 0); 721 test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 0, 5); 722 test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 1, 4); 723 test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 5, 0); 724 test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 9, -4); 725 test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 10, -5); 726 test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 11, -5); 727 test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 0, 5); 728 test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 1, -1); 729 test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 4, -1); 730 test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 8, -1); 731 test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 9, -1); 732 test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 10, -1); 733 test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 0, 5); 734 test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 1, -5); 735 test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 2, -5); 736 test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 4, -5); 737 test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 5, -5); 738 test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 6, -5); 739 test(S("abcde"), 0, 6, SV("abcdefghij"), 9, 0, 5); 740 test(S("abcde"), 0, 6, SV("abcdefghij"), 9, 1, -9); 741 test(S("abcde"), 0, 6, SV("abcdefghij"), 9, 2, -9); 742 test(S("abcde"), 0, 6, SV("abcdefghij"), 10, 0, 5); 743 test(S("abcde"), 0, 6, SV("abcdefghij"), 10, 1, 5); 744 test(S("abcde"), 0, 6, SV("abcdefghij"), 11, 0, 0); 745 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 0, 5); 746 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 1, 4); 747 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 10, -5); 748 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 19, -14); 749 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 20, -15); 750 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 21, -15); 751 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 0, 5); 752 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 1, -1); 753 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 9, -1); 754 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 18, -1); 755 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 19, -1); 756 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 20, -1); 757 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 0, 5); 758 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 1, -10); 759 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 5, -10); 760 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 9, -10); 761 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 10, -10); 762 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 11, -10); 763 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 19, 0, 5); 764 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 19, 1, -19); 765 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 19, 2, -19); 766 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 20, 0, 5); 767 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 20, 1, 5); 768 test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 21, 0, 0); 769 test(S("abcde"), 1, 0, SV(""), 0, 0, 0); 770 test(S("abcde"), 1, 0, SV(""), 0, 1, 0); 771 test(S("abcde"), 1, 0, SV(""), 1, 0, 0); 772 test(S("abcde"), 1, 0, SV("abcde"), 0, 0, 0); 773 test(S("abcde"), 1, 0, SV("abcde"), 0, 1, -1); 774 test(S("abcde"), 1, 0, SV("abcde"), 0, 2, -2); 775 test(S("abcde"), 1, 0, SV("abcde"), 0, 4, -4); 776 test(S("abcde"), 1, 0, SV("abcde"), 0, 5, -5); 777 test(S("abcde"), 1, 0, SV("abcde"), 0, 6, -5); 778 test(S("abcde"), 1, 0, SV("abcde"), 1, 0, 0); 779 test(S("abcde"), 1, 0, SV("abcde"), 1, 1, -1); 780 test(S("abcde"), 1, 0, SV("abcde"), 1, 2, -2); 781 test(S("abcde"), 1, 0, SV("abcde"), 1, 3, -3); 782 test(S("abcde"), 1, 0, SV("abcde"), 1, 4, -4); 783 test(S("abcde"), 1, 0, SV("abcde"), 1, 5, -4); 784 test(S("abcde"), 1, 0, SV("abcde"), 2, 0, 0); 785 test(S("abcde"), 1, 0, SV("abcde"), 2, 1, -1); 786 test(S("abcde"), 1, 0, SV("abcde"), 2, 2, -2); 787 test(S("abcde"), 1, 0, SV("abcde"), 2, 3, -3); 788 test(S("abcde"), 1, 0, SV("abcde"), 2, 4, -3); 789 test(S("abcde"), 1, 0, SV("abcde"), 4, 0, 0); 790 test(S("abcde"), 1, 0, SV("abcde"), 4, 1, -1); 791 test(S("abcde"), 1, 0, SV("abcde"), 4, 2, -1); 792 test(S("abcde"), 1, 0, SV("abcde"), 5, 0, 0); 793 test(S("abcde"), 1, 0, SV("abcde"), 5, 1, 0); 794 test(S("abcde"), 1, 0, SV("abcde"), 6, 0, 0); 795 test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 0, 0); 796 test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 1, -1); 797 test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 5, -5); 798 test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 9, -9); 799 test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 10, -10); 800 test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 11, -10); 801 test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 0, 0); 802 test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 1, -1); 803} 804 805template <class S, class SV> 806void test7() 807{ 808 test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 4, -4); 809 test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 8, -8); 810 test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 9, -9); 811 test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 10, -9); 812 test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 0, 0); 813 test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 1, -1); 814 test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 2, -2); 815 test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 4, -4); 816 test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 5, -5); 817 test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 6, -5); 818 test(S("abcde"), 1, 0, SV("abcdefghij"), 9, 0, 0); 819 test(S("abcde"), 1, 0, SV("abcdefghij"), 9, 1, -1); 820 test(S("abcde"), 1, 0, SV("abcdefghij"), 9, 2, -1); 821 test(S("abcde"), 1, 0, SV("abcdefghij"), 10, 0, 0); 822 test(S("abcde"), 1, 0, SV("abcdefghij"), 10, 1, 0); 823 test(S("abcde"), 1, 0, SV("abcdefghij"), 11, 0, 0); 824 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); 825 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); 826 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); 827 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); 828 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); 829 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); 830 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); 831 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); 832 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); 833 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); 834 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); 835 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); 836 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); 837 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); 838 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); 839 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); 840 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); 841 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); 842 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); 843 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); 844 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); 845 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); 846 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); 847 test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); 848 test(S("abcde"), 1, 1, SV(""), 0, 0, 1); 849 test(S("abcde"), 1, 1, SV(""), 0, 1, 1); 850 test(S("abcde"), 1, 1, SV(""), 1, 0, 0); 851 test(S("abcde"), 1, 1, SV("abcde"), 0, 0, 1); 852 test(S("abcde"), 1, 1, SV("abcde"), 0, 1, 1); 853 test(S("abcde"), 1, 1, SV("abcde"), 0, 2, 1); 854 test(S("abcde"), 1, 1, SV("abcde"), 0, 4, 1); 855 test(S("abcde"), 1, 1, SV("abcde"), 0, 5, 1); 856 test(S("abcde"), 1, 1, SV("abcde"), 0, 6, 1); 857 test(S("abcde"), 1, 1, SV("abcde"), 1, 0, 1); 858 test(S("abcde"), 1, 1, SV("abcde"), 1, 1, 0); 859 test(S("abcde"), 1, 1, SV("abcde"), 1, 2, -1); 860 test(S("abcde"), 1, 1, SV("abcde"), 1, 3, -2); 861 test(S("abcde"), 1, 1, SV("abcde"), 1, 4, -3); 862 test(S("abcde"), 1, 1, SV("abcde"), 1, 5, -3); 863 test(S("abcde"), 1, 1, SV("abcde"), 2, 0, 1); 864 test(S("abcde"), 1, 1, SV("abcde"), 2, 1, -1); 865 test(S("abcde"), 1, 1, SV("abcde"), 2, 2, -1); 866 test(S("abcde"), 1, 1, SV("abcde"), 2, 3, -1); 867 test(S("abcde"), 1, 1, SV("abcde"), 2, 4, -1); 868 test(S("abcde"), 1, 1, SV("abcde"), 4, 0, 1); 869 test(S("abcde"), 1, 1, SV("abcde"), 4, 1, -3); 870 test(S("abcde"), 1, 1, SV("abcde"), 4, 2, -3); 871 test(S("abcde"), 1, 1, SV("abcde"), 5, 0, 1); 872 test(S("abcde"), 1, 1, SV("abcde"), 5, 1, 1); 873 test(S("abcde"), 1, 1, SV("abcde"), 6, 0, 0); 874 test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 0, 1); 875 test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 1, 1); 876 test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 5, 1); 877 test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 9, 1); 878 test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 10, 1); 879 test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 11, 1); 880 test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 0, 1); 881 test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 1, 0); 882 test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 4, -3); 883 test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 8, -7); 884 test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 9, -8); 885 test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 10, -8); 886 test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 0, 1); 887 test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 1, -4); 888 test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 2, -4); 889 test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 4, -4); 890 test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 5, -4); 891 test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 6, -4); 892 test(S("abcde"), 1, 1, SV("abcdefghij"), 9, 0, 1); 893 test(S("abcde"), 1, 1, SV("abcdefghij"), 9, 1, -8); 894 test(S("abcde"), 1, 1, SV("abcdefghij"), 9, 2, -8); 895 test(S("abcde"), 1, 1, SV("abcdefghij"), 10, 0, 1); 896 test(S("abcde"), 1, 1, SV("abcdefghij"), 10, 1, 1); 897 test(S("abcde"), 1, 1, SV("abcdefghij"), 11, 0, 0); 898 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); 899 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 1, 1); 900 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 10, 1); 901 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 19, 1); 902 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 20, 1); 903 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 21, 1); 904 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); 905 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 1, 0); 906 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 9, -8); 907 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 18, -17); 908} 909 910template <class S, class SV> 911void test8() 912{ 913 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 19, -18); 914 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 20, -18); 915 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); 916 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 1, -9); 917 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 5, -9); 918 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); 919 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 10, -9); 920 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 11, -9); 921 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); 922 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 1, -18); 923 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 2, -18); 924 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); 925 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); 926 test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); 927 test(S("abcde"), 1, 2, SV(""), 0, 0, 2); 928 test(S("abcde"), 1, 2, SV(""), 0, 1, 2); 929 test(S("abcde"), 1, 2, SV(""), 1, 0, 0); 930 test(S("abcde"), 1, 2, SV("abcde"), 0, 0, 2); 931 test(S("abcde"), 1, 2, SV("abcde"), 0, 1, 1); 932 test(S("abcde"), 1, 2, SV("abcde"), 0, 2, 1); 933 test(S("abcde"), 1, 2, SV("abcde"), 0, 4, 1); 934 test(S("abcde"), 1, 2, SV("abcde"), 0, 5, 1); 935 test(S("abcde"), 1, 2, SV("abcde"), 0, 6, 1); 936 test(S("abcde"), 1, 2, SV("abcde"), 1, 0, 2); 937 test(S("abcde"), 1, 2, SV("abcde"), 1, 1, 1); 938 test(S("abcde"), 1, 2, SV("abcde"), 1, 2, 0); 939 test(S("abcde"), 1, 2, SV("abcde"), 1, 3, -1); 940 test(S("abcde"), 1, 2, SV("abcde"), 1, 4, -2); 941 test(S("abcde"), 1, 2, SV("abcde"), 1, 5, -2); 942 test(S("abcde"), 1, 2, SV("abcde"), 2, 0, 2); 943 test(S("abcde"), 1, 2, SV("abcde"), 2, 1, -1); 944 test(S("abcde"), 1, 2, SV("abcde"), 2, 2, -1); 945 test(S("abcde"), 1, 2, SV("abcde"), 2, 3, -1); 946 test(S("abcde"), 1, 2, SV("abcde"), 2, 4, -1); 947 test(S("abcde"), 1, 2, SV("abcde"), 4, 0, 2); 948 test(S("abcde"), 1, 2, SV("abcde"), 4, 1, -3); 949 test(S("abcde"), 1, 2, SV("abcde"), 4, 2, -3); 950 test(S("abcde"), 1, 2, SV("abcde"), 5, 0, 2); 951 test(S("abcde"), 1, 2, SV("abcde"), 5, 1, 2); 952 test(S("abcde"), 1, 2, SV("abcde"), 6, 0, 0); 953 test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 0, 2); 954 test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 1, 1); 955 test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 5, 1); 956 test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 9, 1); 957 test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 10, 1); 958 test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 11, 1); 959 test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 0, 2); 960 test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 1, 1); 961 test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 4, -2); 962 test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 8, -6); 963 test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 9, -7); 964 test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 10, -7); 965 test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 0, 2); 966 test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 1, -4); 967 test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 2, -4); 968 test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 4, -4); 969 test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 5, -4); 970 test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 6, -4); 971 test(S("abcde"), 1, 2, SV("abcdefghij"), 9, 0, 2); 972 test(S("abcde"), 1, 2, SV("abcdefghij"), 9, 1, -8); 973 test(S("abcde"), 1, 2, SV("abcdefghij"), 9, 2, -8); 974 test(S("abcde"), 1, 2, SV("abcdefghij"), 10, 0, 2); 975 test(S("abcde"), 1, 2, SV("abcdefghij"), 10, 1, 2); 976 test(S("abcde"), 1, 2, SV("abcdefghij"), 11, 0, 0); 977 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 0, 2); 978 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 1, 1); 979 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 10, 1); 980 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 19, 1); 981 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 20, 1); 982 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 21, 1); 983 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 0, 2); 984 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 1, 1); 985 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 9, -7); 986 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 18, -16); 987 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 19, -17); 988 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 20, -17); 989 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 0, 2); 990 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 1, -9); 991 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 5, -9); 992 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 9, -9); 993 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 10, -9); 994 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 11, -9); 995 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 19, 0, 2); 996 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 19, 1, -18); 997 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 19, 2, -18); 998 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 20, 0, 2); 999 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 20, 1, 2); 1000 test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); 1001 test(S("abcde"), 1, 3, SV(""), 0, 0, 3); 1002 test(S("abcde"), 1, 3, SV(""), 0, 1, 3); 1003 test(S("abcde"), 1, 3, SV(""), 1, 0, 0); 1004 test(S("abcde"), 1, 3, SV("abcde"), 0, 0, 3); 1005 test(S("abcde"), 1, 3, SV("abcde"), 0, 1, 1); 1006 test(S("abcde"), 1, 3, SV("abcde"), 0, 2, 1); 1007 test(S("abcde"), 1, 3, SV("abcde"), 0, 4, 1); 1008 test(S("abcde"), 1, 3, SV("abcde"), 0, 5, 1); 1009 test(S("abcde"), 1, 3, SV("abcde"), 0, 6, 1); 1010 test(S("abcde"), 1, 3, SV("abcde"), 1, 0, 3); 1011 test(S("abcde"), 1, 3, SV("abcde"), 1, 1, 2); 1012 test(S("abcde"), 1, 3, SV("abcde"), 1, 2, 1); 1013} 1014 1015template <class S, class SV> 1016void test9() 1017{ 1018 test(S("abcde"), 1, 3, SV("abcde"), 1, 3, 0); 1019 test(S("abcde"), 1, 3, SV("abcde"), 1, 4, -1); 1020 test(S("abcde"), 1, 3, SV("abcde"), 1, 5, -1); 1021 test(S("abcde"), 1, 3, SV("abcde"), 2, 0, 3); 1022 test(S("abcde"), 1, 3, SV("abcde"), 2, 1, -1); 1023 test(S("abcde"), 1, 3, SV("abcde"), 2, 2, -1); 1024 test(S("abcde"), 1, 3, SV("abcde"), 2, 3, -1); 1025 test(S("abcde"), 1, 3, SV("abcde"), 2, 4, -1); 1026 test(S("abcde"), 1, 3, SV("abcde"), 4, 0, 3); 1027 test(S("abcde"), 1, 3, SV("abcde"), 4, 1, -3); 1028 test(S("abcde"), 1, 3, SV("abcde"), 4, 2, -3); 1029 test(S("abcde"), 1, 3, SV("abcde"), 5, 0, 3); 1030 test(S("abcde"), 1, 3, SV("abcde"), 5, 1, 3); 1031 test(S("abcde"), 1, 3, SV("abcde"), 6, 0, 0); 1032 test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 0, 3); 1033 test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 1, 1); 1034 test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 5, 1); 1035 test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 9, 1); 1036 test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 10, 1); 1037 test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 11, 1); 1038 test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 0, 3); 1039 test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 1, 2); 1040 test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 4, -1); 1041 test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 8, -5); 1042 test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 9, -6); 1043 test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 10, -6); 1044 test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 0, 3); 1045 test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 1, -4); 1046 test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 2, -4); 1047 test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 4, -4); 1048 test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 5, -4); 1049 test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 6, -4); 1050 test(S("abcde"), 1, 3, SV("abcdefghij"), 9, 0, 3); 1051 test(S("abcde"), 1, 3, SV("abcdefghij"), 9, 1, -8); 1052 test(S("abcde"), 1, 3, SV("abcdefghij"), 9, 2, -8); 1053 test(S("abcde"), 1, 3, SV("abcdefghij"), 10, 0, 3); 1054 test(S("abcde"), 1, 3, SV("abcdefghij"), 10, 1, 3); 1055 test(S("abcde"), 1, 3, SV("abcdefghij"), 11, 0, 0); 1056 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 0, 3); 1057 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 1, 1); 1058 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 10, 1); 1059 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 19, 1); 1060 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 20, 1); 1061 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 21, 1); 1062 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 0, 3); 1063 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 1, 2); 1064 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 9, -6); 1065 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 18, -15); 1066 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 19, -16); 1067 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 20, -16); 1068 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 0, 3); 1069 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 1, -9); 1070 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 5, -9); 1071 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 9, -9); 1072 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 10, -9); 1073 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 11, -9); 1074 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 19, 0, 3); 1075 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 19, 1, -18); 1076 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 19, 2, -18); 1077 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 20, 0, 3); 1078 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 20, 1, 3); 1079 test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 21, 0, 0); 1080 test(S("abcde"), 1, 4, SV(""), 0, 0, 4); 1081 test(S("abcde"), 1, 4, SV(""), 0, 1, 4); 1082 test(S("abcde"), 1, 4, SV(""), 1, 0, 0); 1083 test(S("abcde"), 1, 4, SV("abcde"), 0, 0, 4); 1084 test(S("abcde"), 1, 4, SV("abcde"), 0, 1, 1); 1085 test(S("abcde"), 1, 4, SV("abcde"), 0, 2, 1); 1086 test(S("abcde"), 1, 4, SV("abcde"), 0, 4, 1); 1087 test(S("abcde"), 1, 4, SV("abcde"), 0, 5, 1); 1088 test(S("abcde"), 1, 4, SV("abcde"), 0, 6, 1); 1089 test(S("abcde"), 1, 4, SV("abcde"), 1, 0, 4); 1090 test(S("abcde"), 1, 4, SV("abcde"), 1, 1, 3); 1091 test(S("abcde"), 1, 4, SV("abcde"), 1, 2, 2); 1092 test(S("abcde"), 1, 4, SV("abcde"), 1, 3, 1); 1093 test(S("abcde"), 1, 4, SV("abcde"), 1, 4, 0); 1094 test(S("abcde"), 1, 4, SV("abcde"), 1, 5, 0); 1095 test(S("abcde"), 1, 4, SV("abcde"), 2, 0, 4); 1096 test(S("abcde"), 1, 4, SV("abcde"), 2, 1, -1); 1097 test(S("abcde"), 1, 4, SV("abcde"), 2, 2, -1); 1098 test(S("abcde"), 1, 4, SV("abcde"), 2, 3, -1); 1099 test(S("abcde"), 1, 4, SV("abcde"), 2, 4, -1); 1100 test(S("abcde"), 1, 4, SV("abcde"), 4, 0, 4); 1101 test(S("abcde"), 1, 4, SV("abcde"), 4, 1, -3); 1102 test(S("abcde"), 1, 4, SV("abcde"), 4, 2, -3); 1103 test(S("abcde"), 1, 4, SV("abcde"), 5, 0, 4); 1104 test(S("abcde"), 1, 4, SV("abcde"), 5, 1, 4); 1105 test(S("abcde"), 1, 4, SV("abcde"), 6, 0, 0); 1106 test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 0, 4); 1107 test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 1, 1); 1108 test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 5, 1); 1109 test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 9, 1); 1110 test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 10, 1); 1111 test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 11, 1); 1112 test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 0, 4); 1113 test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 1, 3); 1114 test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 4, 0); 1115 test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 8, -4); 1116 test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 9, -5); 1117 test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 10, -5); 1118} 1119 1120template <class S, class SV> 1121void test10() 1122{ 1123 test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 0, 4); 1124 test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 1, -4); 1125 test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 2, -4); 1126 test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 4, -4); 1127 test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 5, -4); 1128 test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 6, -4); 1129 test(S("abcde"), 1, 4, SV("abcdefghij"), 9, 0, 4); 1130 test(S("abcde"), 1, 4, SV("abcdefghij"), 9, 1, -8); 1131 test(S("abcde"), 1, 4, SV("abcdefghij"), 9, 2, -8); 1132 test(S("abcde"), 1, 4, SV("abcdefghij"), 10, 0, 4); 1133 test(S("abcde"), 1, 4, SV("abcdefghij"), 10, 1, 4); 1134 test(S("abcde"), 1, 4, SV("abcdefghij"), 11, 0, 0); 1135 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 0, 4); 1136 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 1, 1); 1137 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 10, 1); 1138 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 19, 1); 1139 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 20, 1); 1140 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 21, 1); 1141 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 0, 4); 1142 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 1, 3); 1143 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 9, -5); 1144 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 18, -14); 1145 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 19, -15); 1146 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 20, -15); 1147 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 0, 4); 1148 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 1, -9); 1149 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 5, -9); 1150 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 9, -9); 1151 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 10, -9); 1152 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 11, -9); 1153 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 0, 4); 1154 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 1, -18); 1155 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 2, -18); 1156 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 20, 0, 4); 1157 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 20, 1, 4); 1158 test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 21, 0, 0); 1159 test(S("abcde"), 1, 5, SV(""), 0, 0, 4); 1160 test(S("abcde"), 1, 5, SV(""), 0, 1, 4); 1161 test(S("abcde"), 1, 5, SV(""), 1, 0, 0); 1162 test(S("abcde"), 1, 5, SV("abcde"), 0, 0, 4); 1163 test(S("abcde"), 1, 5, SV("abcde"), 0, 1, 1); 1164 test(S("abcde"), 1, 5, SV("abcde"), 0, 2, 1); 1165 test(S("abcde"), 1, 5, SV("abcde"), 0, 4, 1); 1166 test(S("abcde"), 1, 5, SV("abcde"), 0, 5, 1); 1167 test(S("abcde"), 1, 5, SV("abcde"), 0, 6, 1); 1168 test(S("abcde"), 1, 5, SV("abcde"), 1, 0, 4); 1169 test(S("abcde"), 1, 5, SV("abcde"), 1, 1, 3); 1170 test(S("abcde"), 1, 5, SV("abcde"), 1, 2, 2); 1171 test(S("abcde"), 1, 5, SV("abcde"), 1, 3, 1); 1172 test(S("abcde"), 1, 5, SV("abcde"), 1, 4, 0); 1173 test(S("abcde"), 1, 5, SV("abcde"), 1, 5, 0); 1174 test(S("abcde"), 1, 5, SV("abcde"), 2, 0, 4); 1175 test(S("abcde"), 1, 5, SV("abcde"), 2, 1, -1); 1176 test(S("abcde"), 1, 5, SV("abcde"), 2, 2, -1); 1177 test(S("abcde"), 1, 5, SV("abcde"), 2, 3, -1); 1178 test(S("abcde"), 1, 5, SV("abcde"), 2, 4, -1); 1179 test(S("abcde"), 1, 5, SV("abcde"), 4, 0, 4); 1180 test(S("abcde"), 1, 5, SV("abcde"), 4, 1, -3); 1181 test(S("abcde"), 1, 5, SV("abcde"), 4, 2, -3); 1182 test(S("abcde"), 1, 5, SV("abcde"), 5, 0, 4); 1183 test(S("abcde"), 1, 5, SV("abcde"), 5, 1, 4); 1184 test(S("abcde"), 1, 5, SV("abcde"), 6, 0, 0); 1185 test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 0, 4); 1186 test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 1, 1); 1187 test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 5, 1); 1188 test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 9, 1); 1189 test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 10, 1); 1190 test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 11, 1); 1191 test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 0, 4); 1192 test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 1, 3); 1193 test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 4, 0); 1194 test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 8, -4); 1195 test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 9, -5); 1196 test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 10, -5); 1197 test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 0, 4); 1198 test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 1, -4); 1199 test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 2, -4); 1200 test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 4, -4); 1201 test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 5, -4); 1202 test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 6, -4); 1203 test(S("abcde"), 1, 5, SV("abcdefghij"), 9, 0, 4); 1204 test(S("abcde"), 1, 5, SV("abcdefghij"), 9, 1, -8); 1205 test(S("abcde"), 1, 5, SV("abcdefghij"), 9, 2, -8); 1206 test(S("abcde"), 1, 5, SV("abcdefghij"), 10, 0, 4); 1207 test(S("abcde"), 1, 5, SV("abcdefghij"), 10, 1, 4); 1208 test(S("abcde"), 1, 5, SV("abcdefghij"), 11, 0, 0); 1209 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 0, 4); 1210 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 1, 1); 1211 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 10, 1); 1212 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 19, 1); 1213 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 20, 1); 1214 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 21, 1); 1215 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 0, 4); 1216 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 1, 3); 1217 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 9, -5); 1218 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 18, -14); 1219 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 19, -15); 1220 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 20, -15); 1221 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 0, 4); 1222 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 1, -9); 1223} 1224 1225template <class S, class SV> 1226void test11() 1227{ 1228 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 5, -9); 1229 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 9, -9); 1230 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 10, -9); 1231 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 11, -9); 1232 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 19, 0, 4); 1233 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 19, 1, -18); 1234 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 19, 2, -18); 1235 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 20, 0, 4); 1236 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 20, 1, 4); 1237 test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 21, 0, 0); 1238 test(S("abcde"), 2, 0, SV(""), 0, 0, 0); 1239 test(S("abcde"), 2, 0, SV(""), 0, 1, 0); 1240 test(S("abcde"), 2, 0, SV(""), 1, 0, 0); 1241 test(S("abcde"), 2, 0, SV("abcde"), 0, 0, 0); 1242 test(S("abcde"), 2, 0, SV("abcde"), 0, 1, -1); 1243 test(S("abcde"), 2, 0, SV("abcde"), 0, 2, -2); 1244 test(S("abcde"), 2, 0, SV("abcde"), 0, 4, -4); 1245 test(S("abcde"), 2, 0, SV("abcde"), 0, 5, -5); 1246 test(S("abcde"), 2, 0, SV("abcde"), 0, 6, -5); 1247 test(S("abcde"), 2, 0, SV("abcde"), 1, 0, 0); 1248 test(S("abcde"), 2, 0, SV("abcde"), 1, 1, -1); 1249 test(S("abcde"), 2, 0, SV("abcde"), 1, 2, -2); 1250 test(S("abcde"), 2, 0, SV("abcde"), 1, 3, -3); 1251 test(S("abcde"), 2, 0, SV("abcde"), 1, 4, -4); 1252 test(S("abcde"), 2, 0, SV("abcde"), 1, 5, -4); 1253 test(S("abcde"), 2, 0, SV("abcde"), 2, 0, 0); 1254 test(S("abcde"), 2, 0, SV("abcde"), 2, 1, -1); 1255 test(S("abcde"), 2, 0, SV("abcde"), 2, 2, -2); 1256 test(S("abcde"), 2, 0, SV("abcde"), 2, 3, -3); 1257 test(S("abcde"), 2, 0, SV("abcde"), 2, 4, -3); 1258 test(S("abcde"), 2, 0, SV("abcde"), 4, 0, 0); 1259 test(S("abcde"), 2, 0, SV("abcde"), 4, 1, -1); 1260 test(S("abcde"), 2, 0, SV("abcde"), 4, 2, -1); 1261 test(S("abcde"), 2, 0, SV("abcde"), 5, 0, 0); 1262 test(S("abcde"), 2, 0, SV("abcde"), 5, 1, 0); 1263 test(S("abcde"), 2, 0, SV("abcde"), 6, 0, 0); 1264 test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 0, 0); 1265 test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 1, -1); 1266 test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 5, -5); 1267 test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 9, -9); 1268 test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 10, -10); 1269 test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 11, -10); 1270 test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 0, 0); 1271 test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 1, -1); 1272 test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 4, -4); 1273 test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 8, -8); 1274 test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 9, -9); 1275 test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 10, -9); 1276 test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 0, 0); 1277 test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 1, -1); 1278 test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 2, -2); 1279 test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 4, -4); 1280 test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 5, -5); 1281 test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 6, -5); 1282 test(S("abcde"), 2, 0, SV("abcdefghij"), 9, 0, 0); 1283 test(S("abcde"), 2, 0, SV("abcdefghij"), 9, 1, -1); 1284 test(S("abcde"), 2, 0, SV("abcdefghij"), 9, 2, -1); 1285 test(S("abcde"), 2, 0, SV("abcdefghij"), 10, 0, 0); 1286 test(S("abcde"), 2, 0, SV("abcdefghij"), 10, 1, 0); 1287 test(S("abcde"), 2, 0, SV("abcdefghij"), 11, 0, 0); 1288 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); 1289 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); 1290 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); 1291 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); 1292 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); 1293 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); 1294 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); 1295 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); 1296 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); 1297 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); 1298 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); 1299 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); 1300 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); 1301 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); 1302 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); 1303 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); 1304 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); 1305 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); 1306 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); 1307 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); 1308 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); 1309 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); 1310 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); 1311 test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); 1312 test(S("abcde"), 2, 1, SV(""), 0, 0, 1); 1313 test(S("abcde"), 2, 1, SV(""), 0, 1, 1); 1314 test(S("abcde"), 2, 1, SV(""), 1, 0, 0); 1315 test(S("abcde"), 2, 1, SV("abcde"), 0, 0, 1); 1316 test(S("abcde"), 2, 1, SV("abcde"), 0, 1, 2); 1317 test(S("abcde"), 2, 1, SV("abcde"), 0, 2, 2); 1318 test(S("abcde"), 2, 1, SV("abcde"), 0, 4, 2); 1319 test(S("abcde"), 2, 1, SV("abcde"), 0, 5, 2); 1320 test(S("abcde"), 2, 1, SV("abcde"), 0, 6, 2); 1321 test(S("abcde"), 2, 1, SV("abcde"), 1, 0, 1); 1322 test(S("abcde"), 2, 1, SV("abcde"), 1, 1, 1); 1323 test(S("abcde"), 2, 1, SV("abcde"), 1, 2, 1); 1324 test(S("abcde"), 2, 1, SV("abcde"), 1, 3, 1); 1325 test(S("abcde"), 2, 1, SV("abcde"), 1, 4, 1); 1326 test(S("abcde"), 2, 1, SV("abcde"), 1, 5, 1); 1327 test(S("abcde"), 2, 1, SV("abcde"), 2, 0, 1); 1328} 1329 1330template <class S, class SV> 1331void test12() 1332{ 1333 test(S("abcde"), 2, 1, SV("abcde"), 2, 1, 0); 1334 test(S("abcde"), 2, 1, SV("abcde"), 2, 2, -1); 1335 test(S("abcde"), 2, 1, SV("abcde"), 2, 3, -2); 1336 test(S("abcde"), 2, 1, SV("abcde"), 2, 4, -2); 1337 test(S("abcde"), 2, 1, SV("abcde"), 4, 0, 1); 1338 test(S("abcde"), 2, 1, SV("abcde"), 4, 1, -2); 1339 test(S("abcde"), 2, 1, SV("abcde"), 4, 2, -2); 1340 test(S("abcde"), 2, 1, SV("abcde"), 5, 0, 1); 1341 test(S("abcde"), 2, 1, SV("abcde"), 5, 1, 1); 1342 test(S("abcde"), 2, 1, SV("abcde"), 6, 0, 0); 1343 test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 0, 1); 1344 test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 1, 2); 1345 test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 5, 2); 1346 test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 9, 2); 1347 test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 10, 2); 1348 test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 11, 2); 1349 test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 0, 1); 1350 test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 1, 1); 1351 test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 4, 1); 1352 test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 8, 1); 1353 test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 9, 1); 1354 test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 10, 1); 1355 test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 0, 1); 1356 test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 1, -3); 1357 test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 2, -3); 1358 test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 4, -3); 1359 test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 5, -3); 1360 test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 6, -3); 1361 test(S("abcde"), 2, 1, SV("abcdefghij"), 9, 0, 1); 1362 test(S("abcde"), 2, 1, SV("abcdefghij"), 9, 1, -7); 1363 test(S("abcde"), 2, 1, SV("abcdefghij"), 9, 2, -7); 1364 test(S("abcde"), 2, 1, SV("abcdefghij"), 10, 0, 1); 1365 test(S("abcde"), 2, 1, SV("abcdefghij"), 10, 1, 1); 1366 test(S("abcde"), 2, 1, SV("abcdefghij"), 11, 0, 0); 1367 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); 1368 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 1, 2); 1369 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 10, 2); 1370 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 19, 2); 1371 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 20, 2); 1372 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 21, 2); 1373 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); 1374 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 1, 1); 1375 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 9, 1); 1376 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 18, 1); 1377 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 19, 1); 1378 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 20, 1); 1379 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); 1380 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 1, -8); 1381 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 5, -8); 1382 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 9, -8); 1383 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 10, -8); 1384 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 11, -8); 1385 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); 1386 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 19, 1, -17); 1387 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 19, 2, -17); 1388 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); 1389 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); 1390 test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); 1391 test(S("abcde"), 2, 2, SV(""), 0, 0, 2); 1392 test(S("abcde"), 2, 2, SV(""), 0, 1, 2); 1393 test(S("abcde"), 2, 2, SV(""), 1, 0, 0); 1394 test(S("abcde"), 2, 2, SV("abcde"), 0, 0, 2); 1395 test(S("abcde"), 2, 2, SV("abcde"), 0, 1, 2); 1396 test(S("abcde"), 2, 2, SV("abcde"), 0, 2, 2); 1397 test(S("abcde"), 2, 2, SV("abcde"), 0, 4, 2); 1398 test(S("abcde"), 2, 2, SV("abcde"), 0, 5, 2); 1399 test(S("abcde"), 2, 2, SV("abcde"), 0, 6, 2); 1400 test(S("abcde"), 2, 2, SV("abcde"), 1, 0, 2); 1401 test(S("abcde"), 2, 2, SV("abcde"), 1, 1, 1); 1402 test(S("abcde"), 2, 2, SV("abcde"), 1, 2, 1); 1403 test(S("abcde"), 2, 2, SV("abcde"), 1, 3, 1); 1404 test(S("abcde"), 2, 2, SV("abcde"), 1, 4, 1); 1405 test(S("abcde"), 2, 2, SV("abcde"), 1, 5, 1); 1406 test(S("abcde"), 2, 2, SV("abcde"), 2, 0, 2); 1407 test(S("abcde"), 2, 2, SV("abcde"), 2, 1, 1); 1408 test(S("abcde"), 2, 2, SV("abcde"), 2, 2, 0); 1409 test(S("abcde"), 2, 2, SV("abcde"), 2, 3, -1); 1410 test(S("abcde"), 2, 2, SV("abcde"), 2, 4, -1); 1411 test(S("abcde"), 2, 2, SV("abcde"), 4, 0, 2); 1412 test(S("abcde"), 2, 2, SV("abcde"), 4, 1, -2); 1413 test(S("abcde"), 2, 2, SV("abcde"), 4, 2, -2); 1414 test(S("abcde"), 2, 2, SV("abcde"), 5, 0, 2); 1415 test(S("abcde"), 2, 2, SV("abcde"), 5, 1, 2); 1416 test(S("abcde"), 2, 2, SV("abcde"), 6, 0, 0); 1417 test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 0, 2); 1418 test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 1, 2); 1419 test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 5, 2); 1420 test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 9, 2); 1421 test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 10, 2); 1422 test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 11, 2); 1423 test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 0, 2); 1424 test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 1, 1); 1425 test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 4, 1); 1426 test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 8, 1); 1427 test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 9, 1); 1428 test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 10, 1); 1429 test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 0, 2); 1430 test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 1, -3); 1431 test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 2, -3); 1432 test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 4, -3); 1433} 1434 1435template <class S, class SV> 1436void test13() 1437{ 1438 test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 5, -3); 1439 test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 6, -3); 1440 test(S("abcde"), 2, 2, SV("abcdefghij"), 9, 0, 2); 1441 test(S("abcde"), 2, 2, SV("abcdefghij"), 9, 1, -7); 1442 test(S("abcde"), 2, 2, SV("abcdefghij"), 9, 2, -7); 1443 test(S("abcde"), 2, 2, SV("abcdefghij"), 10, 0, 2); 1444 test(S("abcde"), 2, 2, SV("abcdefghij"), 10, 1, 2); 1445 test(S("abcde"), 2, 2, SV("abcdefghij"), 11, 0, 0); 1446 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 0, 2); 1447 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 1, 2); 1448 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 10, 2); 1449 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 19, 2); 1450 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 20, 2); 1451 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 21, 2); 1452 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 0, 2); 1453 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 1, 1); 1454 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 9, 1); 1455 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 18, 1); 1456 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 19, 1); 1457 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 20, 1); 1458 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 0, 2); 1459 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 1, -8); 1460 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 5, -8); 1461 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 9, -8); 1462 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 10, -8); 1463 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 11, -8); 1464 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 19, 0, 2); 1465 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 19, 1, -17); 1466 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 19, 2, -17); 1467 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 20, 0, 2); 1468 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 20, 1, 2); 1469 test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); 1470 test(S("abcde"), 2, 3, SV(""), 0, 0, 3); 1471 test(S("abcde"), 2, 3, SV(""), 0, 1, 3); 1472 test(S("abcde"), 2, 3, SV(""), 1, 0, 0); 1473 test(S("abcde"), 2, 3, SV("abcde"), 0, 0, 3); 1474 test(S("abcde"), 2, 3, SV("abcde"), 0, 1, 2); 1475 test(S("abcde"), 2, 3, SV("abcde"), 0, 2, 2); 1476 test(S("abcde"), 2, 3, SV("abcde"), 0, 4, 2); 1477 test(S("abcde"), 2, 3, SV("abcde"), 0, 5, 2); 1478 test(S("abcde"), 2, 3, SV("abcde"), 0, 6, 2); 1479 test(S("abcde"), 2, 3, SV("abcde"), 1, 0, 3); 1480 test(S("abcde"), 2, 3, SV("abcde"), 1, 1, 1); 1481 test(S("abcde"), 2, 3, SV("abcde"), 1, 2, 1); 1482 test(S("abcde"), 2, 3, SV("abcde"), 1, 3, 1); 1483 test(S("abcde"), 2, 3, SV("abcde"), 1, 4, 1); 1484 test(S("abcde"), 2, 3, SV("abcde"), 1, 5, 1); 1485 test(S("abcde"), 2, 3, SV("abcde"), 2, 0, 3); 1486 test(S("abcde"), 2, 3, SV("abcde"), 2, 1, 2); 1487 test(S("abcde"), 2, 3, SV("abcde"), 2, 2, 1); 1488 test(S("abcde"), 2, 3, SV("abcde"), 2, 3, 0); 1489 test(S("abcde"), 2, 3, SV("abcde"), 2, 4, 0); 1490 test(S("abcde"), 2, 3, SV("abcde"), 4, 0, 3); 1491 test(S("abcde"), 2, 3, SV("abcde"), 4, 1, -2); 1492 test(S("abcde"), 2, 3, SV("abcde"), 4, 2, -2); 1493 test(S("abcde"), 2, 3, SV("abcde"), 5, 0, 3); 1494 test(S("abcde"), 2, 3, SV("abcde"), 5, 1, 3); 1495 test(S("abcde"), 2, 3, SV("abcde"), 6, 0, 0); 1496 test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 0, 3); 1497 test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 1, 2); 1498 test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 5, 2); 1499 test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 9, 2); 1500 test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 10, 2); 1501 test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 11, 2); 1502 test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 0, 3); 1503 test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 1, 1); 1504 test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 4, 1); 1505 test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 8, 1); 1506 test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 9, 1); 1507 test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 10, 1); 1508 test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 0, 3); 1509 test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 1, -3); 1510 test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 2, -3); 1511 test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 4, -3); 1512 test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 5, -3); 1513 test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 6, -3); 1514 test(S("abcde"), 2, 3, SV("abcdefghij"), 9, 0, 3); 1515 test(S("abcde"), 2, 3, SV("abcdefghij"), 9, 1, -7); 1516 test(S("abcde"), 2, 3, SV("abcdefghij"), 9, 2, -7); 1517 test(S("abcde"), 2, 3, SV("abcdefghij"), 10, 0, 3); 1518 test(S("abcde"), 2, 3, SV("abcdefghij"), 10, 1, 3); 1519 test(S("abcde"), 2, 3, SV("abcdefghij"), 11, 0, 0); 1520 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 0, 3); 1521 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 1, 2); 1522 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 10, 2); 1523 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 19, 2); 1524 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 20, 2); 1525 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 21, 2); 1526 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 0, 3); 1527 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 1, 1); 1528 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 9, 1); 1529 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 18, 1); 1530 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 19, 1); 1531 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 20, 1); 1532 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 0, 3); 1533 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 1, -8); 1534 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 5, -8); 1535 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 9, -8); 1536 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 10, -8); 1537 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 11, -8); 1538} 1539 1540template <class S, class SV> 1541void test14() 1542{ 1543 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 19, 0, 3); 1544 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 19, 1, -17); 1545 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 19, 2, -17); 1546 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 20, 0, 3); 1547 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 20, 1, 3); 1548 test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 21, 0, 0); 1549 test(S("abcde"), 2, 4, SV(""), 0, 0, 3); 1550 test(S("abcde"), 2, 4, SV(""), 0, 1, 3); 1551 test(S("abcde"), 2, 4, SV(""), 1, 0, 0); 1552 test(S("abcde"), 2, 4, SV("abcde"), 0, 0, 3); 1553 test(S("abcde"), 2, 4, SV("abcde"), 0, 1, 2); 1554 test(S("abcde"), 2, 4, SV("abcde"), 0, 2, 2); 1555 test(S("abcde"), 2, 4, SV("abcde"), 0, 4, 2); 1556 test(S("abcde"), 2, 4, SV("abcde"), 0, 5, 2); 1557 test(S("abcde"), 2, 4, SV("abcde"), 0, 6, 2); 1558 test(S("abcde"), 2, 4, SV("abcde"), 1, 0, 3); 1559 test(S("abcde"), 2, 4, SV("abcde"), 1, 1, 1); 1560 test(S("abcde"), 2, 4, SV("abcde"), 1, 2, 1); 1561 test(S("abcde"), 2, 4, SV("abcde"), 1, 3, 1); 1562 test(S("abcde"), 2, 4, SV("abcde"), 1, 4, 1); 1563 test(S("abcde"), 2, 4, SV("abcde"), 1, 5, 1); 1564 test(S("abcde"), 2, 4, SV("abcde"), 2, 0, 3); 1565 test(S("abcde"), 2, 4, SV("abcde"), 2, 1, 2); 1566 test(S("abcde"), 2, 4, SV("abcde"), 2, 2, 1); 1567 test(S("abcde"), 2, 4, SV("abcde"), 2, 3, 0); 1568 test(S("abcde"), 2, 4, SV("abcde"), 2, 4, 0); 1569 test(S("abcde"), 2, 4, SV("abcde"), 4, 0, 3); 1570 test(S("abcde"), 2, 4, SV("abcde"), 4, 1, -2); 1571 test(S("abcde"), 2, 4, SV("abcde"), 4, 2, -2); 1572 test(S("abcde"), 2, 4, SV("abcde"), 5, 0, 3); 1573 test(S("abcde"), 2, 4, SV("abcde"), 5, 1, 3); 1574 test(S("abcde"), 2, 4, SV("abcde"), 6, 0, 0); 1575 test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 0, 3); 1576 test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 1, 2); 1577 test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 5, 2); 1578 test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 9, 2); 1579 test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 10, 2); 1580 test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 11, 2); 1581 test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 0, 3); 1582 test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 1, 1); 1583 test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 4, 1); 1584 test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 8, 1); 1585 test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 9, 1); 1586 test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 10, 1); 1587 test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 0, 3); 1588 test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 1, -3); 1589 test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 2, -3); 1590 test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 4, -3); 1591 test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 5, -3); 1592 test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 6, -3); 1593 test(S("abcde"), 2, 4, SV("abcdefghij"), 9, 0, 3); 1594 test(S("abcde"), 2, 4, SV("abcdefghij"), 9, 1, -7); 1595 test(S("abcde"), 2, 4, SV("abcdefghij"), 9, 2, -7); 1596 test(S("abcde"), 2, 4, SV("abcdefghij"), 10, 0, 3); 1597 test(S("abcde"), 2, 4, SV("abcdefghij"), 10, 1, 3); 1598 test(S("abcde"), 2, 4, SV("abcdefghij"), 11, 0, 0); 1599 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 0, 3); 1600 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 1, 2); 1601 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 10, 2); 1602 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 19, 2); 1603 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 20, 2); 1604 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 21, 2); 1605 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 0, 3); 1606 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 1, 1); 1607 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 9, 1); 1608 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 18, 1); 1609 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 19, 1); 1610 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 20, 1); 1611 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 0, 3); 1612 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 1, -8); 1613 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 5, -8); 1614 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 9, -8); 1615 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 10, -8); 1616 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 11, -8); 1617 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 19, 0, 3); 1618 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 19, 1, -17); 1619 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 19, 2, -17); 1620 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 20, 0, 3); 1621 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 20, 1, 3); 1622 test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 21, 0, 0); 1623 test(S("abcde"), 4, 0, SV(""), 0, 0, 0); 1624 test(S("abcde"), 4, 0, SV(""), 0, 1, 0); 1625 test(S("abcde"), 4, 0, SV(""), 1, 0, 0); 1626 test(S("abcde"), 4, 0, SV("abcde"), 0, 0, 0); 1627 test(S("abcde"), 4, 0, SV("abcde"), 0, 1, -1); 1628 test(S("abcde"), 4, 0, SV("abcde"), 0, 2, -2); 1629 test(S("abcde"), 4, 0, SV("abcde"), 0, 4, -4); 1630 test(S("abcde"), 4, 0, SV("abcde"), 0, 5, -5); 1631 test(S("abcde"), 4, 0, SV("abcde"), 0, 6, -5); 1632 test(S("abcde"), 4, 0, SV("abcde"), 1, 0, 0); 1633 test(S("abcde"), 4, 0, SV("abcde"), 1, 1, -1); 1634 test(S("abcde"), 4, 0, SV("abcde"), 1, 2, -2); 1635 test(S("abcde"), 4, 0, SV("abcde"), 1, 3, -3); 1636 test(S("abcde"), 4, 0, SV("abcde"), 1, 4, -4); 1637 test(S("abcde"), 4, 0, SV("abcde"), 1, 5, -4); 1638 test(S("abcde"), 4, 0, SV("abcde"), 2, 0, 0); 1639 test(S("abcde"), 4, 0, SV("abcde"), 2, 1, -1); 1640 test(S("abcde"), 4, 0, SV("abcde"), 2, 2, -2); 1641 test(S("abcde"), 4, 0, SV("abcde"), 2, 3, -3); 1642 test(S("abcde"), 4, 0, SV("abcde"), 2, 4, -3); 1643} 1644 1645template <class S, class SV> 1646void test15() 1647{ 1648 test(S("abcde"), 4, 0, SV("abcde"), 4, 0, 0); 1649 test(S("abcde"), 4, 0, SV("abcde"), 4, 1, -1); 1650 test(S("abcde"), 4, 0, SV("abcde"), 4, 2, -1); 1651 test(S("abcde"), 4, 0, SV("abcde"), 5, 0, 0); 1652 test(S("abcde"), 4, 0, SV("abcde"), 5, 1, 0); 1653 test(S("abcde"), 4, 0, SV("abcde"), 6, 0, 0); 1654 test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 0, 0); 1655 test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 1, -1); 1656 test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 5, -5); 1657 test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 9, -9); 1658 test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 10, -10); 1659 test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 11, -10); 1660 test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 0, 0); 1661 test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 1, -1); 1662 test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 4, -4); 1663 test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 8, -8); 1664 test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 9, -9); 1665 test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 10, -9); 1666 test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 0, 0); 1667 test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 1, -1); 1668 test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 2, -2); 1669 test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 4, -4); 1670 test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 5, -5); 1671 test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 6, -5); 1672 test(S("abcde"), 4, 0, SV("abcdefghij"), 9, 0, 0); 1673 test(S("abcde"), 4, 0, SV("abcdefghij"), 9, 1, -1); 1674 test(S("abcde"), 4, 0, SV("abcdefghij"), 9, 2, -1); 1675 test(S("abcde"), 4, 0, SV("abcdefghij"), 10, 0, 0); 1676 test(S("abcde"), 4, 0, SV("abcdefghij"), 10, 1, 0); 1677 test(S("abcde"), 4, 0, SV("abcdefghij"), 11, 0, 0); 1678 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); 1679 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); 1680 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); 1681 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); 1682 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); 1683 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); 1684 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); 1685 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); 1686 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); 1687 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); 1688 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); 1689 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); 1690 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); 1691 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); 1692 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); 1693 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); 1694 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); 1695 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); 1696 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); 1697 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); 1698 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); 1699 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); 1700 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); 1701 test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); 1702 test(S("abcde"), 4, 1, SV(""), 0, 0, 1); 1703 test(S("abcde"), 4, 1, SV(""), 0, 1, 1); 1704 test(S("abcde"), 4, 1, SV(""), 1, 0, 0); 1705 test(S("abcde"), 4, 1, SV("abcde"), 0, 0, 1); 1706 test(S("abcde"), 4, 1, SV("abcde"), 0, 1, 4); 1707 test(S("abcde"), 4, 1, SV("abcde"), 0, 2, 4); 1708 test(S("abcde"), 4, 1, SV("abcde"), 0, 4, 4); 1709 test(S("abcde"), 4, 1, SV("abcde"), 0, 5, 4); 1710 test(S("abcde"), 4, 1, SV("abcde"), 0, 6, 4); 1711 test(S("abcde"), 4, 1, SV("abcde"), 1, 0, 1); 1712 test(S("abcde"), 4, 1, SV("abcde"), 1, 1, 3); 1713 test(S("abcde"), 4, 1, SV("abcde"), 1, 2, 3); 1714 test(S("abcde"), 4, 1, SV("abcde"), 1, 3, 3); 1715 test(S("abcde"), 4, 1, SV("abcde"), 1, 4, 3); 1716 test(S("abcde"), 4, 1, SV("abcde"), 1, 5, 3); 1717 test(S("abcde"), 4, 1, SV("abcde"), 2, 0, 1); 1718 test(S("abcde"), 4, 1, SV("abcde"), 2, 1, 2); 1719 test(S("abcde"), 4, 1, SV("abcde"), 2, 2, 2); 1720 test(S("abcde"), 4, 1, SV("abcde"), 2, 3, 2); 1721 test(S("abcde"), 4, 1, SV("abcde"), 2, 4, 2); 1722 test(S("abcde"), 4, 1, SV("abcde"), 4, 0, 1); 1723 test(S("abcde"), 4, 1, SV("abcde"), 4, 1, 0); 1724 test(S("abcde"), 4, 1, SV("abcde"), 4, 2, 0); 1725 test(S("abcde"), 4, 1, SV("abcde"), 5, 0, 1); 1726 test(S("abcde"), 4, 1, SV("abcde"), 5, 1, 1); 1727 test(S("abcde"), 4, 1, SV("abcde"), 6, 0, 0); 1728 test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 0, 1); 1729 test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 1, 4); 1730 test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 5, 4); 1731 test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 9, 4); 1732 test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 10, 4); 1733 test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 11, 4); 1734 test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 0, 1); 1735 test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 1, 3); 1736 test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 4, 3); 1737 test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 8, 3); 1738 test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 9, 3); 1739 test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 10, 3); 1740 test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 0, 1); 1741 test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 1, -1); 1742 test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 2, -1); 1743 test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 4, -1); 1744 test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 5, -1); 1745 test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 6, -1); 1746 test(S("abcde"), 4, 1, SV("abcdefghij"), 9, 0, 1); 1747 test(S("abcde"), 4, 1, SV("abcdefghij"), 9, 1, -5); 1748} 1749 1750template <class S, class SV> 1751void test16() 1752{ 1753 test(S("abcde"), 4, 1, SV("abcdefghij"), 9, 2, -5); 1754 test(S("abcde"), 4, 1, SV("abcdefghij"), 10, 0, 1); 1755 test(S("abcde"), 4, 1, SV("abcdefghij"), 10, 1, 1); 1756 test(S("abcde"), 4, 1, SV("abcdefghij"), 11, 0, 0); 1757 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); 1758 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 1, 4); 1759 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 10, 4); 1760 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 19, 4); 1761 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 20, 4); 1762 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 21, 4); 1763 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); 1764 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 1, 3); 1765 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 9, 3); 1766 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 18, 3); 1767 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 19, 3); 1768 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 20, 3); 1769 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); 1770 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 1, -6); 1771 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 5, -6); 1772 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 9, -6); 1773 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 10, -6); 1774 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 11, -6); 1775 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); 1776 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 19, 1, -15); 1777 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 19, 2, -15); 1778 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); 1779 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); 1780 test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); 1781 test(S("abcde"), 4, 2, SV(""), 0, 0, 1); 1782 test(S("abcde"), 4, 2, SV(""), 0, 1, 1); 1783 test(S("abcde"), 4, 2, SV(""), 1, 0, 0); 1784 test(S("abcde"), 4, 2, SV("abcde"), 0, 0, 1); 1785 test(S("abcde"), 4, 2, SV("abcde"), 0, 1, 4); 1786 test(S("abcde"), 4, 2, SV("abcde"), 0, 2, 4); 1787 test(S("abcde"), 4, 2, SV("abcde"), 0, 4, 4); 1788 test(S("abcde"), 4, 2, SV("abcde"), 0, 5, 4); 1789 test(S("abcde"), 4, 2, SV("abcde"), 0, 6, 4); 1790 test(S("abcde"), 4, 2, SV("abcde"), 1, 0, 1); 1791 test(S("abcde"), 4, 2, SV("abcde"), 1, 1, 3); 1792 test(S("abcde"), 4, 2, SV("abcde"), 1, 2, 3); 1793 test(S("abcde"), 4, 2, SV("abcde"), 1, 3, 3); 1794 test(S("abcde"), 4, 2, SV("abcde"), 1, 4, 3); 1795 test(S("abcde"), 4, 2, SV("abcde"), 1, 5, 3); 1796 test(S("abcde"), 4, 2, SV("abcde"), 2, 0, 1); 1797 test(S("abcde"), 4, 2, SV("abcde"), 2, 1, 2); 1798 test(S("abcde"), 4, 2, SV("abcde"), 2, 2, 2); 1799 test(S("abcde"), 4, 2, SV("abcde"), 2, 3, 2); 1800 test(S("abcde"), 4, 2, SV("abcde"), 2, 4, 2); 1801 test(S("abcde"), 4, 2, SV("abcde"), 4, 0, 1); 1802 test(S("abcde"), 4, 2, SV("abcde"), 4, 1, 0); 1803 test(S("abcde"), 4, 2, SV("abcde"), 4, 2, 0); 1804 test(S("abcde"), 4, 2, SV("abcde"), 5, 0, 1); 1805 test(S("abcde"), 4, 2, SV("abcde"), 5, 1, 1); 1806 test(S("abcde"), 4, 2, SV("abcde"), 6, 0, 0); 1807 test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 0, 1); 1808 test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 1, 4); 1809 test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 5, 4); 1810 test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 9, 4); 1811 test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 10, 4); 1812 test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 11, 4); 1813 test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 0, 1); 1814 test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 1, 3); 1815 test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 4, 3); 1816 test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 8, 3); 1817 test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 9, 3); 1818 test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 10, 3); 1819 test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 0, 1); 1820 test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 1, -1); 1821 test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 2, -1); 1822 test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 4, -1); 1823 test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 5, -1); 1824 test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 6, -1); 1825 test(S("abcde"), 4, 2, SV("abcdefghij"), 9, 0, 1); 1826 test(S("abcde"), 4, 2, SV("abcdefghij"), 9, 1, -5); 1827 test(S("abcde"), 4, 2, SV("abcdefghij"), 9, 2, -5); 1828 test(S("abcde"), 4, 2, SV("abcdefghij"), 10, 0, 1); 1829 test(S("abcde"), 4, 2, SV("abcdefghij"), 10, 1, 1); 1830 test(S("abcde"), 4, 2, SV("abcdefghij"), 11, 0, 0); 1831 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 0, 1); 1832 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 1, 4); 1833 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 10, 4); 1834 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 19, 4); 1835 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 20, 4); 1836 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 21, 4); 1837 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 0, 1); 1838 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 1, 3); 1839 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 9, 3); 1840 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 18, 3); 1841 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 19, 3); 1842 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 20, 3); 1843 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 0, 1); 1844 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 1, -6); 1845 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 5, -6); 1846 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 9, -6); 1847 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 10, -6); 1848 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 11, -6); 1849 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 19, 0, 1); 1850 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 19, 1, -15); 1851 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 19, 2, -15); 1852 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 20, 0, 1); 1853} 1854 1855template <class S, class SV> 1856void test17() 1857{ 1858 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 20, 1, 1); 1859 test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); 1860 test(S("abcde"), 5, 0, SV(""), 0, 0, 0); 1861 test(S("abcde"), 5, 0, SV(""), 0, 1, 0); 1862 test(S("abcde"), 5, 0, SV(""), 1, 0, 0); 1863 test(S("abcde"), 5, 0, SV("abcde"), 0, 0, 0); 1864 test(S("abcde"), 5, 0, SV("abcde"), 0, 1, -1); 1865 test(S("abcde"), 5, 0, SV("abcde"), 0, 2, -2); 1866 test(S("abcde"), 5, 0, SV("abcde"), 0, 4, -4); 1867 test(S("abcde"), 5, 0, SV("abcde"), 0, 5, -5); 1868 test(S("abcde"), 5, 0, SV("abcde"), 0, 6, -5); 1869 test(S("abcde"), 5, 0, SV("abcde"), 1, 0, 0); 1870 test(S("abcde"), 5, 0, SV("abcde"), 1, 1, -1); 1871 test(S("abcde"), 5, 0, SV("abcde"), 1, 2, -2); 1872 test(S("abcde"), 5, 0, SV("abcde"), 1, 3, -3); 1873 test(S("abcde"), 5, 0, SV("abcde"), 1, 4, -4); 1874 test(S("abcde"), 5, 0, SV("abcde"), 1, 5, -4); 1875 test(S("abcde"), 5, 0, SV("abcde"), 2, 0, 0); 1876 test(S("abcde"), 5, 0, SV("abcde"), 2, 1, -1); 1877 test(S("abcde"), 5, 0, SV("abcde"), 2, 2, -2); 1878 test(S("abcde"), 5, 0, SV("abcde"), 2, 3, -3); 1879 test(S("abcde"), 5, 0, SV("abcde"), 2, 4, -3); 1880 test(S("abcde"), 5, 0, SV("abcde"), 4, 0, 0); 1881 test(S("abcde"), 5, 0, SV("abcde"), 4, 1, -1); 1882 test(S("abcde"), 5, 0, SV("abcde"), 4, 2, -1); 1883 test(S("abcde"), 5, 0, SV("abcde"), 5, 0, 0); 1884 test(S("abcde"), 5, 0, SV("abcde"), 5, 1, 0); 1885 test(S("abcde"), 5, 0, SV("abcde"), 6, 0, 0); 1886 test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 0, 0); 1887 test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 1, -1); 1888 test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 5, -5); 1889 test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 9, -9); 1890 test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 10, -10); 1891 test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 11, -10); 1892 test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 0, 0); 1893 test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 1, -1); 1894 test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 4, -4); 1895 test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 8, -8); 1896 test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 9, -9); 1897 test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 10, -9); 1898 test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 0, 0); 1899 test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 1, -1); 1900 test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 2, -2); 1901 test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 4, -4); 1902 test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 5, -5); 1903 test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 6, -5); 1904 test(S("abcde"), 5, 0, SV("abcdefghij"), 9, 0, 0); 1905 test(S("abcde"), 5, 0, SV("abcdefghij"), 9, 1, -1); 1906 test(S("abcde"), 5, 0, SV("abcdefghij"), 9, 2, -1); 1907 test(S("abcde"), 5, 0, SV("abcdefghij"), 10, 0, 0); 1908 test(S("abcde"), 5, 0, SV("abcdefghij"), 10, 1, 0); 1909 test(S("abcde"), 5, 0, SV("abcdefghij"), 11, 0, 0); 1910 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); 1911 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); 1912 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); 1913 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); 1914 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); 1915 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); 1916 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); 1917 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); 1918 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); 1919 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); 1920 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); 1921 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); 1922 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); 1923 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); 1924 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); 1925 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); 1926 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); 1927 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); 1928 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); 1929 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); 1930 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); 1931 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); 1932 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); 1933 test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); 1934 test(S("abcde"), 5, 1, SV(""), 0, 0, 0); 1935 test(S("abcde"), 5, 1, SV(""), 0, 1, 0); 1936 test(S("abcde"), 5, 1, SV(""), 1, 0, 0); 1937 test(S("abcde"), 5, 1, SV("abcde"), 0, 0, 0); 1938 test(S("abcde"), 5, 1, SV("abcde"), 0, 1, -1); 1939 test(S("abcde"), 5, 1, SV("abcde"), 0, 2, -2); 1940 test(S("abcde"), 5, 1, SV("abcde"), 0, 4, -4); 1941 test(S("abcde"), 5, 1, SV("abcde"), 0, 5, -5); 1942 test(S("abcde"), 5, 1, SV("abcde"), 0, 6, -5); 1943 test(S("abcde"), 5, 1, SV("abcde"), 1, 0, 0); 1944 test(S("abcde"), 5, 1, SV("abcde"), 1, 1, -1); 1945 test(S("abcde"), 5, 1, SV("abcde"), 1, 2, -2); 1946 test(S("abcde"), 5, 1, SV("abcde"), 1, 3, -3); 1947 test(S("abcde"), 5, 1, SV("abcde"), 1, 4, -4); 1948 test(S("abcde"), 5, 1, SV("abcde"), 1, 5, -4); 1949 test(S("abcde"), 5, 1, SV("abcde"), 2, 0, 0); 1950 test(S("abcde"), 5, 1, SV("abcde"), 2, 1, -1); 1951 test(S("abcde"), 5, 1, SV("abcde"), 2, 2, -2); 1952 test(S("abcde"), 5, 1, SV("abcde"), 2, 3, -3); 1953 test(S("abcde"), 5, 1, SV("abcde"), 2, 4, -3); 1954 test(S("abcde"), 5, 1, SV("abcde"), 4, 0, 0); 1955 test(S("abcde"), 5, 1, SV("abcde"), 4, 1, -1); 1956 test(S("abcde"), 5, 1, SV("abcde"), 4, 2, -1); 1957 test(S("abcde"), 5, 1, SV("abcde"), 5, 0, 0); 1958} 1959 1960template <class S, class SV> 1961void test18() 1962{ 1963 test(S("abcde"), 5, 1, SV("abcde"), 5, 1, 0); 1964 test(S("abcde"), 5, 1, SV("abcde"), 6, 0, 0); 1965 test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 0, 0); 1966 test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 1, -1); 1967 test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 5, -5); 1968 test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 9, -9); 1969 test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 10, -10); 1970 test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 11, -10); 1971 test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 0, 0); 1972 test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 1, -1); 1973 test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 4, -4); 1974 test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 8, -8); 1975 test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 9, -9); 1976 test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 10, -9); 1977 test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 0, 0); 1978 test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 1, -1); 1979 test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 2, -2); 1980 test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 4, -4); 1981 test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 5, -5); 1982 test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 6, -5); 1983 test(S("abcde"), 5, 1, SV("abcdefghij"), 9, 0, 0); 1984 test(S("abcde"), 5, 1, SV("abcdefghij"), 9, 1, -1); 1985 test(S("abcde"), 5, 1, SV("abcdefghij"), 9, 2, -1); 1986 test(S("abcde"), 5, 1, SV("abcdefghij"), 10, 0, 0); 1987 test(S("abcde"), 5, 1, SV("abcdefghij"), 10, 1, 0); 1988 test(S("abcde"), 5, 1, SV("abcdefghij"), 11, 0, 0); 1989 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 0, 0); 1990 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 1, -1); 1991 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 10, -10); 1992 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 19, -19); 1993 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 20, -20); 1994 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 21, -20); 1995 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 0, 0); 1996 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); 1997 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 9, -9); 1998 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 18, -18); 1999 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 19, -19); 2000 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 20, -19); 2001 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 0, 0); 2002 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 1, -1); 2003 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 5, -5); 2004 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); 2005 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); 2006 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); 2007 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 0, 0); 2008 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 1, -1); 2009 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 2, -1); 2010 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 20, 0, 0); 2011 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 20, 1, 0); 2012 test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); 2013 test(S("abcde"), 6, 0, SV(""), 0, 0, 0); 2014 test(S("abcde"), 6, 0, SV(""), 0, 1, 0); 2015 test(S("abcde"), 6, 0, SV(""), 1, 0, 0); 2016 test(S("abcde"), 6, 0, SV("abcde"), 0, 0, 0); 2017 test(S("abcde"), 6, 0, SV("abcde"), 0, 1, 0); 2018 test(S("abcde"), 6, 0, SV("abcde"), 0, 2, 0); 2019 test(S("abcde"), 6, 0, SV("abcde"), 0, 4, 0); 2020 test(S("abcde"), 6, 0, SV("abcde"), 0, 5, 0); 2021 test(S("abcde"), 6, 0, SV("abcde"), 0, 6, 0); 2022 test(S("abcde"), 6, 0, SV("abcde"), 1, 0, 0); 2023 test(S("abcde"), 6, 0, SV("abcde"), 1, 1, 0); 2024 test(S("abcde"), 6, 0, SV("abcde"), 1, 2, 0); 2025 test(S("abcde"), 6, 0, SV("abcde"), 1, 3, 0); 2026 test(S("abcde"), 6, 0, SV("abcde"), 1, 4, 0); 2027 test(S("abcde"), 6, 0, SV("abcde"), 1, 5, 0); 2028 test(S("abcde"), 6, 0, SV("abcde"), 2, 0, 0); 2029 test(S("abcde"), 6, 0, SV("abcde"), 2, 1, 0); 2030 test(S("abcde"), 6, 0, SV("abcde"), 2, 2, 0); 2031 test(S("abcde"), 6, 0, SV("abcde"), 2, 3, 0); 2032 test(S("abcde"), 6, 0, SV("abcde"), 2, 4, 0); 2033 test(S("abcde"), 6, 0, SV("abcde"), 4, 0, 0); 2034 test(S("abcde"), 6, 0, SV("abcde"), 4, 1, 0); 2035 test(S("abcde"), 6, 0, SV("abcde"), 4, 2, 0); 2036 test(S("abcde"), 6, 0, SV("abcde"), 5, 0, 0); 2037 test(S("abcde"), 6, 0, SV("abcde"), 5, 1, 0); 2038 test(S("abcde"), 6, 0, SV("abcde"), 6, 0, 0); 2039 test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 0, 0); 2040 test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 1, 0); 2041 test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 5, 0); 2042 test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 9, 0); 2043 test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 10, 0); 2044 test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 11, 0); 2045 test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 0, 0); 2046 test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 1, 0); 2047 test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 4, 0); 2048 test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 8, 0); 2049 test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 9, 0); 2050 test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 10, 0); 2051 test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 0, 0); 2052 test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 1, 0); 2053 test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 2, 0); 2054 test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 4, 0); 2055 test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 5, 0); 2056 test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 6, 0); 2057 test(S("abcde"), 6, 0, SV("abcdefghij"), 9, 0, 0); 2058 test(S("abcde"), 6, 0, SV("abcdefghij"), 9, 1, 0); 2059 test(S("abcde"), 6, 0, SV("abcdefghij"), 9, 2, 0); 2060 test(S("abcde"), 6, 0, SV("abcdefghij"), 10, 0, 0); 2061 test(S("abcde"), 6, 0, SV("abcdefghij"), 10, 1, 0); 2062 test(S("abcde"), 6, 0, SV("abcdefghij"), 11, 0, 0); 2063} 2064 2065template <class S, class SV> 2066void test19() 2067{ 2068 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); 2069 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 1, 0); 2070 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 10, 0); 2071 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 19, 0); 2072 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 20, 0); 2073 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 21, 0); 2074 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); 2075 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 1, 0); 2076 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 9, 0); 2077 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 18, 0); 2078 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 19, 0); 2079 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 20, 0); 2080 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); 2081 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 1, 0); 2082 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 5, 0); 2083 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 9, 0); 2084 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 10, 0); 2085 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 11, 0); 2086 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); 2087 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 19, 1, 0); 2088 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 19, 2, 0); 2089 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); 2090 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); 2091 test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); 2092 test(S("abcdefghij"), 0, 0, SV(""), 0, 0, 0); 2093 test(S("abcdefghij"), 0, 0, SV(""), 0, 1, 0); 2094 test(S("abcdefghij"), 0, 0, SV(""), 1, 0, 0); 2095 test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 0, 0); 2096 test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 1, -1); 2097 test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 2, -2); 2098 test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 4, -4); 2099 test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 5, -5); 2100 test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 6, -5); 2101 test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 0, 0); 2102 test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 1, -1); 2103 test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 2, -2); 2104 test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 3, -3); 2105 test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 4, -4); 2106 test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 5, -4); 2107 test(S("abcdefghij"), 0, 0, SV("abcde"), 2, 0, 0); 2108 test(S("abcdefghij"), 0, 0, SV("abcde"), 2, 1, -1); 2109 test(S("abcdefghij"), 0, 0, SV("abcde"), 2, 2, -2); 2110 test(S("abcdefghij"), 0, 0, SV("abcde"), 2, 3, -3); 2111 test(S("abcdefghij"), 0, 0, SV("abcde"), 2, 4, -3); 2112 test(S("abcdefghij"), 0, 0, SV("abcde"), 4, 0, 0); 2113 test(S("abcdefghij"), 0, 0, SV("abcde"), 4, 1, -1); 2114 test(S("abcdefghij"), 0, 0, SV("abcde"), 4, 2, -1); 2115 test(S("abcdefghij"), 0, 0, SV("abcde"), 5, 0, 0); 2116 test(S("abcdefghij"), 0, 0, SV("abcde"), 5, 1, 0); 2117 test(S("abcdefghij"), 0, 0, SV("abcde"), 6, 0, 0); 2118 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 0, 0); 2119 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 1, -1); 2120 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 5, -5); 2121 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 9, -9); 2122 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 10, -10); 2123 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 11, -10); 2124 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 0, 0); 2125 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 1, -1); 2126 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 4, -4); 2127 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 8, -8); 2128 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 9, -9); 2129 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 10, -9); 2130 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 0, 0); 2131 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 1, -1); 2132 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 2, -2); 2133 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 4, -4); 2134 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 5, -5); 2135 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 6, -5); 2136 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 9, 0, 0); 2137 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 9, 1, -1); 2138 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 9, 2, -1); 2139 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 10, 0, 0); 2140 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 10, 1, 0); 2141 test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 11, 0, 0); 2142 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); 2143 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); 2144 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); 2145 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); 2146 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); 2147 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); 2148 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); 2149 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); 2150 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); 2151 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); 2152 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); 2153 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); 2154 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); 2155 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); 2156 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); 2157 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); 2158 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); 2159 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); 2160 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); 2161 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); 2162 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); 2163 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); 2164 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); 2165 test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); 2166 test(S("abcdefghij"), 0, 1, SV(""), 0, 0, 1); 2167 test(S("abcdefghij"), 0, 1, SV(""), 0, 1, 1); 2168} 2169 2170template <class S, class SV> 2171void test20() 2172{ 2173 test(S("abcdefghij"), 0, 1, SV(""), 1, 0, 0); 2174 test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 0, 1); 2175 test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 1, 0); 2176 test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 2, -1); 2177 test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 4, -3); 2178 test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 5, -4); 2179 test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 6, -4); 2180 test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 0, 1); 2181 test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 1, -1); 2182 test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 2, -1); 2183 test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 3, -1); 2184 test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 4, -1); 2185 test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 5, -1); 2186 test(S("abcdefghij"), 0, 1, SV("abcde"), 2, 0, 1); 2187 test(S("abcdefghij"), 0, 1, SV("abcde"), 2, 1, -2); 2188 test(S("abcdefghij"), 0, 1, SV("abcde"), 2, 2, -2); 2189 test(S("abcdefghij"), 0, 1, SV("abcde"), 2, 3, -2); 2190 test(S("abcdefghij"), 0, 1, SV("abcde"), 2, 4, -2); 2191 test(S("abcdefghij"), 0, 1, SV("abcde"), 4, 0, 1); 2192 test(S("abcdefghij"), 0, 1, SV("abcde"), 4, 1, -4); 2193 test(S("abcdefghij"), 0, 1, SV("abcde"), 4, 2, -4); 2194 test(S("abcdefghij"), 0, 1, SV("abcde"), 5, 0, 1); 2195 test(S("abcdefghij"), 0, 1, SV("abcde"), 5, 1, 1); 2196 test(S("abcdefghij"), 0, 1, SV("abcde"), 6, 0, 0); 2197 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 0, 1); 2198 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 1, 0); 2199 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 5, -4); 2200 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 9, -8); 2201 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 10, -9); 2202 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 11, -9); 2203 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 0, 1); 2204 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 1, -1); 2205 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 4, -1); 2206 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 8, -1); 2207 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 9, -1); 2208 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 10, -1); 2209 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 0, 1); 2210 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 1, -5); 2211 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 2, -5); 2212 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 4, -5); 2213 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 5, -5); 2214 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 6, -5); 2215 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 9, 0, 1); 2216 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 9, 1, -9); 2217 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 9, 2, -9); 2218 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 10, 0, 1); 2219 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 10, 1, 1); 2220 test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 11, 0, 0); 2221 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); 2222 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 1, 0); 2223 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 10, -9); 2224 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 19, -18); 2225 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 20, -19); 2226 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 21, -19); 2227 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); 2228 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); 2229 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 9, -1); 2230 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 18, -1); 2231 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 19, -1); 2232 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 20, -1); 2233 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); 2234 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 1, -10); 2235 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 5, -10); 2236 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 9, -10); 2237 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); 2238 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); 2239 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); 2240 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 1, -19); 2241 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 2, -19); 2242 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); 2243 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); 2244 test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); 2245 test(S("abcdefghij"), 0, 5, SV(""), 0, 0, 5); 2246 test(S("abcdefghij"), 0, 5, SV(""), 0, 1, 5); 2247 test(S("abcdefghij"), 0, 5, SV(""), 1, 0, 0); 2248 test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 0, 5); 2249 test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 1, 4); 2250 test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 2, 3); 2251 test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 4, 1); 2252 test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 5, 0); 2253 test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 6, 0); 2254 test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 0, 5); 2255 test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 1, -1); 2256 test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 2, -1); 2257 test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 3, -1); 2258 test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 4, -1); 2259 test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 5, -1); 2260 test(S("abcdefghij"), 0, 5, SV("abcde"), 2, 0, 5); 2261 test(S("abcdefghij"), 0, 5, SV("abcde"), 2, 1, -2); 2262 test(S("abcdefghij"), 0, 5, SV("abcde"), 2, 2, -2); 2263 test(S("abcdefghij"), 0, 5, SV("abcde"), 2, 3, -2); 2264 test(S("abcdefghij"), 0, 5, SV("abcde"), 2, 4, -2); 2265 test(S("abcdefghij"), 0, 5, SV("abcde"), 4, 0, 5); 2266 test(S("abcdefghij"), 0, 5, SV("abcde"), 4, 1, -4); 2267 test(S("abcdefghij"), 0, 5, SV("abcde"), 4, 2, -4); 2268 test(S("abcdefghij"), 0, 5, SV("abcde"), 5, 0, 5); 2269 test(S("abcdefghij"), 0, 5, SV("abcde"), 5, 1, 5); 2270 test(S("abcdefghij"), 0, 5, SV("abcde"), 6, 0, 0); 2271 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 0, 5); 2272 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 1, 4); 2273} 2274 2275template <class S, class SV> 2276void test21() 2277{ 2278 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 5, 0); 2279 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 9, -4); 2280 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 10, -5); 2281 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 11, -5); 2282 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 0, 5); 2283 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 1, -1); 2284 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 4, -1); 2285 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 8, -1); 2286 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 9, -1); 2287 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 10, -1); 2288 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 0, 5); 2289 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 1, -5); 2290 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 2, -5); 2291 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 4, -5); 2292 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 5, -5); 2293 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 6, -5); 2294 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 9, 0, 5); 2295 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 9, 1, -9); 2296 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 9, 2, -9); 2297 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 10, 0, 5); 2298 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 10, 1, 5); 2299 test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 11, 0, 0); 2300 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 0, 5); 2301 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 1, 4); 2302 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 10, -5); 2303 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 19, -14); 2304 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 20, -15); 2305 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 21, -15); 2306 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 0, 5); 2307 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 1, -1); 2308 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 9, -1); 2309 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 18, -1); 2310 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 19, -1); 2311 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 20, -1); 2312 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 0, 5); 2313 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 1, -10); 2314 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 5, -10); 2315 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 9, -10); 2316 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 10, -10); 2317 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 11, -10); 2318 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 0, 5); 2319 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 1, -19); 2320 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 2, -19); 2321 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 20, 0, 5); 2322 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 20, 1, 5); 2323 test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 21, 0, 0); 2324 test(S("abcdefghij"), 0, 9, SV(""), 0, 0, 9); 2325 test(S("abcdefghij"), 0, 9, SV(""), 0, 1, 9); 2326 test(S("abcdefghij"), 0, 9, SV(""), 1, 0, 0); 2327 test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 0, 9); 2328 test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 1, 8); 2329 test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 2, 7); 2330 test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 4, 5); 2331 test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 5, 4); 2332 test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 6, 4); 2333 test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 0, 9); 2334 test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 1, -1); 2335 test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 2, -1); 2336 test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 3, -1); 2337 test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 4, -1); 2338 test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 5, -1); 2339 test(S("abcdefghij"), 0, 9, SV("abcde"), 2, 0, 9); 2340 test(S("abcdefghij"), 0, 9, SV("abcde"), 2, 1, -2); 2341 test(S("abcdefghij"), 0, 9, SV("abcde"), 2, 2, -2); 2342 test(S("abcdefghij"), 0, 9, SV("abcde"), 2, 3, -2); 2343 test(S("abcdefghij"), 0, 9, SV("abcde"), 2, 4, -2); 2344 test(S("abcdefghij"), 0, 9, SV("abcde"), 4, 0, 9); 2345 test(S("abcdefghij"), 0, 9, SV("abcde"), 4, 1, -4); 2346 test(S("abcdefghij"), 0, 9, SV("abcde"), 4, 2, -4); 2347 test(S("abcdefghij"), 0, 9, SV("abcde"), 5, 0, 9); 2348 test(S("abcdefghij"), 0, 9, SV("abcde"), 5, 1, 9); 2349 test(S("abcdefghij"), 0, 9, SV("abcde"), 6, 0, 0); 2350 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 0, 9); 2351 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 1, 8); 2352 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 5, 4); 2353 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 9, 0); 2354 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 10, -1); 2355 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 11, -1); 2356 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 0, 9); 2357 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 1, -1); 2358 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 4, -1); 2359 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 8, -1); 2360 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 9, -1); 2361 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 10, -1); 2362 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 0, 9); 2363 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 1, -5); 2364 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 2, -5); 2365 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 4, -5); 2366 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 5, -5); 2367 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 6, -5); 2368 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 9, 0, 9); 2369 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 9, 1, -9); 2370 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 9, 2, -9); 2371 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 10, 0, 9); 2372 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 10, 1, 9); 2373 test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 11, 0, 0); 2374 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 0, 9); 2375 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 1, 8); 2376 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 10, -1); 2377 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 19, -10); 2378} 2379 2380template <class S, class SV> 2381void test22() 2382{ 2383 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 20, -11); 2384 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 21, -11); 2385 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 0, 9); 2386 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 1, -1); 2387 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 9, -1); 2388 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 18, -1); 2389 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 19, -1); 2390 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 20, -1); 2391 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 0, 9); 2392 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 1, -10); 2393 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 5, -10); 2394 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 9, -10); 2395 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 10, -10); 2396 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 11, -10); 2397 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 19, 0, 9); 2398 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 19, 1, -19); 2399 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 19, 2, -19); 2400 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 20, 0, 9); 2401 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 20, 1, 9); 2402 test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 21, 0, 0); 2403 test(S("abcdefghij"), 0, 10, SV(""), 0, 0, 10); 2404 test(S("abcdefghij"), 0, 10, SV(""), 0, 1, 10); 2405 test(S("abcdefghij"), 0, 10, SV(""), 1, 0, 0); 2406 test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 0, 10); 2407 test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 1, 9); 2408 test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 2, 8); 2409 test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 4, 6); 2410 test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 5, 5); 2411 test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 6, 5); 2412 test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 0, 10); 2413 test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 1, -1); 2414 test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 2, -1); 2415 test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 3, -1); 2416 test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 4, -1); 2417 test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 5, -1); 2418 test(S("abcdefghij"), 0, 10, SV("abcde"), 2, 0, 10); 2419 test(S("abcdefghij"), 0, 10, SV("abcde"), 2, 1, -2); 2420 test(S("abcdefghij"), 0, 10, SV("abcde"), 2, 2, -2); 2421 test(S("abcdefghij"), 0, 10, SV("abcde"), 2, 3, -2); 2422 test(S("abcdefghij"), 0, 10, SV("abcde"), 2, 4, -2); 2423 test(S("abcdefghij"), 0, 10, SV("abcde"), 4, 0, 10); 2424 test(S("abcdefghij"), 0, 10, SV("abcde"), 4, 1, -4); 2425 test(S("abcdefghij"), 0, 10, SV("abcde"), 4, 2, -4); 2426 test(S("abcdefghij"), 0, 10, SV("abcde"), 5, 0, 10); 2427 test(S("abcdefghij"), 0, 10, SV("abcde"), 5, 1, 10); 2428 test(S("abcdefghij"), 0, 10, SV("abcde"), 6, 0, 0); 2429 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 0, 10); 2430 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 1, 9); 2431 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 5, 5); 2432 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 9, 1); 2433 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 10, 0); 2434 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 11, 0); 2435 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 0, 10); 2436 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 1, -1); 2437 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 4, -1); 2438 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 8, -1); 2439 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 9, -1); 2440 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 10, -1); 2441 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 0, 10); 2442 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 1, -5); 2443 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 2, -5); 2444 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 4, -5); 2445 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 5, -5); 2446 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 6, -5); 2447 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 9, 0, 10); 2448 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 9, 1, -9); 2449 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 9, 2, -9); 2450 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 10, 0, 10); 2451 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 10, 1, 10); 2452 test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 11, 0, 0); 2453 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 0, 10); 2454 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 1, 9); 2455 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 10, 0); 2456 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 19, -9); 2457 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 20, -10); 2458 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 21, -10); 2459 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 0, 10); 2460 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 1, -1); 2461 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 9, -1); 2462 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 18, -1); 2463 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 19, -1); 2464 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 20, -1); 2465 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 0, 10); 2466 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 1, -10); 2467 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 5, -10); 2468 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 9, -10); 2469 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 10, -10); 2470 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 11, -10); 2471 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 0, 10); 2472 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 1, -19); 2473 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 2, -19); 2474 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 20, 0, 10); 2475 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 20, 1, 10); 2476 test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 21, 0, 0); 2477 test(S("abcdefghij"), 0, 11, SV(""), 0, 0, 10); 2478 test(S("abcdefghij"), 0, 11, SV(""), 0, 1, 10); 2479 test(S("abcdefghij"), 0, 11, SV(""), 1, 0, 0); 2480 test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 0, 10); 2481 test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 1, 9); 2482 test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 2, 8); 2483} 2484 2485template <class S, class SV> 2486void test23() 2487{ 2488 test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 4, 6); 2489 test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 5, 5); 2490 test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 6, 5); 2491 test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 0, 10); 2492 test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 1, -1); 2493 test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 2, -1); 2494 test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 3, -1); 2495 test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 4, -1); 2496 test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 5, -1); 2497 test(S("abcdefghij"), 0, 11, SV("abcde"), 2, 0, 10); 2498 test(S("abcdefghij"), 0, 11, SV("abcde"), 2, 1, -2); 2499 test(S("abcdefghij"), 0, 11, SV("abcde"), 2, 2, -2); 2500 test(S("abcdefghij"), 0, 11, SV("abcde"), 2, 3, -2); 2501 test(S("abcdefghij"), 0, 11, SV("abcde"), 2, 4, -2); 2502 test(S("abcdefghij"), 0, 11, SV("abcde"), 4, 0, 10); 2503 test(S("abcdefghij"), 0, 11, SV("abcde"), 4, 1, -4); 2504 test(S("abcdefghij"), 0, 11, SV("abcde"), 4, 2, -4); 2505 test(S("abcdefghij"), 0, 11, SV("abcde"), 5, 0, 10); 2506 test(S("abcdefghij"), 0, 11, SV("abcde"), 5, 1, 10); 2507 test(S("abcdefghij"), 0, 11, SV("abcde"), 6, 0, 0); 2508 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 0, 10); 2509 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 1, 9); 2510 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 5, 5); 2511 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 9, 1); 2512 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 10, 0); 2513 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 11, 0); 2514 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 0, 10); 2515 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 1, -1); 2516 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 4, -1); 2517 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 8, -1); 2518 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 9, -1); 2519 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 10, -1); 2520 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 0, 10); 2521 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 1, -5); 2522 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 2, -5); 2523 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 4, -5); 2524 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 5, -5); 2525 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 6, -5); 2526 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 9, 0, 10); 2527 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 9, 1, -9); 2528 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 9, 2, -9); 2529 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 10, 0, 10); 2530 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 10, 1, 10); 2531 test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 11, 0, 0); 2532 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 0, 10); 2533 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 1, 9); 2534 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 10, 0); 2535 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 19, -9); 2536 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 20, -10); 2537 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 21, -10); 2538 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 0, 10); 2539 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 1, -1); 2540 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 9, -1); 2541 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 18, -1); 2542 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 19, -1); 2543 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 20, -1); 2544 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 0, 10); 2545 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 1, -10); 2546 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 5, -10); 2547 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 9, -10); 2548 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 10, -10); 2549 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 11, -10); 2550 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 19, 0, 10); 2551 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 19, 1, -19); 2552 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 19, 2, -19); 2553 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 20, 0, 10); 2554 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 20, 1, 10); 2555 test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 21, 0, 0); 2556 test(S("abcdefghij"), 1, 0, SV(""), 0, 0, 0); 2557 test(S("abcdefghij"), 1, 0, SV(""), 0, 1, 0); 2558 test(S("abcdefghij"), 1, 0, SV(""), 1, 0, 0); 2559 test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 0, 0); 2560 test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 1, -1); 2561 test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 2, -2); 2562 test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 4, -4); 2563 test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 5, -5); 2564 test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 6, -5); 2565 test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 0, 0); 2566 test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 1, -1); 2567 test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 2, -2); 2568 test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 3, -3); 2569 test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 4, -4); 2570 test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 5, -4); 2571 test(S("abcdefghij"), 1, 0, SV("abcde"), 2, 0, 0); 2572 test(S("abcdefghij"), 1, 0, SV("abcde"), 2, 1, -1); 2573 test(S("abcdefghij"), 1, 0, SV("abcde"), 2, 2, -2); 2574 test(S("abcdefghij"), 1, 0, SV("abcde"), 2, 3, -3); 2575 test(S("abcdefghij"), 1, 0, SV("abcde"), 2, 4, -3); 2576 test(S("abcdefghij"), 1, 0, SV("abcde"), 4, 0, 0); 2577 test(S("abcdefghij"), 1, 0, SV("abcde"), 4, 1, -1); 2578 test(S("abcdefghij"), 1, 0, SV("abcde"), 4, 2, -1); 2579 test(S("abcdefghij"), 1, 0, SV("abcde"), 5, 0, 0); 2580 test(S("abcdefghij"), 1, 0, SV("abcde"), 5, 1, 0); 2581 test(S("abcdefghij"), 1, 0, SV("abcde"), 6, 0, 0); 2582 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 0, 0); 2583 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 1, -1); 2584 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 5, -5); 2585 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 9, -9); 2586 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 10, -10); 2587 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 11, -10); 2588} 2589 2590template <class S, class SV> 2591void test24() 2592{ 2593 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 0, 0); 2594 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 1, -1); 2595 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 4, -4); 2596 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 8, -8); 2597 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 9, -9); 2598 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 10, -9); 2599 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 0, 0); 2600 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 1, -1); 2601 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 2, -2); 2602 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 4, -4); 2603 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 5, -5); 2604 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 6, -5); 2605 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 9, 0, 0); 2606 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 9, 1, -1); 2607 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 9, 2, -1); 2608 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 10, 0, 0); 2609 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 10, 1, 0); 2610 test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 11, 0, 0); 2611 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); 2612 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); 2613 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); 2614 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); 2615 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); 2616 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); 2617 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); 2618 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); 2619 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); 2620 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); 2621 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); 2622 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); 2623 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); 2624 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); 2625 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); 2626 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); 2627 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); 2628 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); 2629 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); 2630 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); 2631 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); 2632 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); 2633 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); 2634 test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); 2635 test(S("abcdefghij"), 1, 1, SV(""), 0, 0, 1); 2636 test(S("abcdefghij"), 1, 1, SV(""), 0, 1, 1); 2637 test(S("abcdefghij"), 1, 1, SV(""), 1, 0, 0); 2638 test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 0, 1); 2639 test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 1, 1); 2640 test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 2, 1); 2641 test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 4, 1); 2642 test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 5, 1); 2643 test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 6, 1); 2644 test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 0, 1); 2645 test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 1, 0); 2646 test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 2, -1); 2647 test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 3, -2); 2648 test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 4, -3); 2649 test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 5, -3); 2650 test(S("abcdefghij"), 1, 1, SV("abcde"), 2, 0, 1); 2651 test(S("abcdefghij"), 1, 1, SV("abcde"), 2, 1, -1); 2652 test(S("abcdefghij"), 1, 1, SV("abcde"), 2, 2, -1); 2653 test(S("abcdefghij"), 1, 1, SV("abcde"), 2, 3, -1); 2654 test(S("abcdefghij"), 1, 1, SV("abcde"), 2, 4, -1); 2655 test(S("abcdefghij"), 1, 1, SV("abcde"), 4, 0, 1); 2656 test(S("abcdefghij"), 1, 1, SV("abcde"), 4, 1, -3); 2657 test(S("abcdefghij"), 1, 1, SV("abcde"), 4, 2, -3); 2658 test(S("abcdefghij"), 1, 1, SV("abcde"), 5, 0, 1); 2659 test(S("abcdefghij"), 1, 1, SV("abcde"), 5, 1, 1); 2660 test(S("abcdefghij"), 1, 1, SV("abcde"), 6, 0, 0); 2661 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 0, 1); 2662 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 1, 1); 2663 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 5, 1); 2664 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 9, 1); 2665 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 10, 1); 2666 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 11, 1); 2667 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 0, 1); 2668 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 1, 0); 2669 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 4, -3); 2670 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 8, -7); 2671 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 9, -8); 2672 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 10, -8); 2673 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 0, 1); 2674 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 1, -4); 2675 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 2, -4); 2676 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 4, -4); 2677 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 5, -4); 2678 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 6, -4); 2679 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 9, 0, 1); 2680 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 9, 1, -8); 2681 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 9, 2, -8); 2682 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 10, 0, 1); 2683 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 10, 1, 1); 2684 test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 11, 0, 0); 2685 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); 2686 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 1, 1); 2687 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 10, 1); 2688 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 19, 1); 2689 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 20, 1); 2690 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 21, 1); 2691 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); 2692 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 1, 0); 2693} 2694 2695template <class S, class SV> 2696void test25() 2697{ 2698 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 9, -8); 2699 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 18, -17); 2700 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 19, -18); 2701 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 20, -18); 2702 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); 2703 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 1, -9); 2704 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 5, -9); 2705 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); 2706 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 10, -9); 2707 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 11, -9); 2708 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); 2709 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 1, -18); 2710 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 2, -18); 2711 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); 2712 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); 2713 test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); 2714 test(S("abcdefghij"), 1, 4, SV(""), 0, 0, 4); 2715 test(S("abcdefghij"), 1, 4, SV(""), 0, 1, 4); 2716 test(S("abcdefghij"), 1, 4, SV(""), 1, 0, 0); 2717 test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 0, 4); 2718 test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 1, 1); 2719 test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 2, 1); 2720 test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 4, 1); 2721 test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 5, 1); 2722 test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 6, 1); 2723 test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 0, 4); 2724 test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 1, 3); 2725 test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 2, 2); 2726 test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 3, 1); 2727 test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 4, 0); 2728 test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 5, 0); 2729 test(S("abcdefghij"), 1, 4, SV("abcde"), 2, 0, 4); 2730 test(S("abcdefghij"), 1, 4, SV("abcde"), 2, 1, -1); 2731 test(S("abcdefghij"), 1, 4, SV("abcde"), 2, 2, -1); 2732 test(S("abcdefghij"), 1, 4, SV("abcde"), 2, 3, -1); 2733 test(S("abcdefghij"), 1, 4, SV("abcde"), 2, 4, -1); 2734 test(S("abcdefghij"), 1, 4, SV("abcde"), 4, 0, 4); 2735 test(S("abcdefghij"), 1, 4, SV("abcde"), 4, 1, -3); 2736 test(S("abcdefghij"), 1, 4, SV("abcde"), 4, 2, -3); 2737 test(S("abcdefghij"), 1, 4, SV("abcde"), 5, 0, 4); 2738 test(S("abcdefghij"), 1, 4, SV("abcde"), 5, 1, 4); 2739 test(S("abcdefghij"), 1, 4, SV("abcde"), 6, 0, 0); 2740 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 0, 4); 2741 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 1, 1); 2742 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 5, 1); 2743 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 9, 1); 2744 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 10, 1); 2745 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 11, 1); 2746 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 0, 4); 2747 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 1, 3); 2748 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 4, 0); 2749 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 8, -4); 2750 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 9, -5); 2751 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 10, -5); 2752 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 0, 4); 2753 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 1, -4); 2754 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 2, -4); 2755 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 4, -4); 2756 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 5, -4); 2757 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 6, -4); 2758 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 9, 0, 4); 2759 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 9, 1, -8); 2760 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 9, 2, -8); 2761 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 10, 0, 4); 2762 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 10, 1, 4); 2763 test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 11, 0, 0); 2764 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 0, 4); 2765 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 1, 1); 2766 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 10, 1); 2767 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 19, 1); 2768 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 20, 1); 2769 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 21, 1); 2770 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 0, 4); 2771 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 1, 3); 2772 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 9, -5); 2773 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 18, -14); 2774 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 19, -15); 2775 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 20, -15); 2776 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 0, 4); 2777 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 1, -9); 2778 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 5, -9); 2779 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 9, -9); 2780 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 10, -9); 2781 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 11, -9); 2782 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 0, 4); 2783 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 1, -18); 2784 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 2, -18); 2785 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 20, 0, 4); 2786 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 20, 1, 4); 2787 test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 21, 0, 0); 2788 test(S("abcdefghij"), 1, 8, SV(""), 0, 0, 8); 2789 test(S("abcdefghij"), 1, 8, SV(""), 0, 1, 8); 2790 test(S("abcdefghij"), 1, 8, SV(""), 1, 0, 0); 2791 test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 0, 8); 2792 test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 1, 1); 2793 test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 2, 1); 2794 test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 4, 1); 2795 test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 5, 1); 2796 test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 6, 1); 2797 test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 0, 8); 2798} 2799 2800template <class S, class SV> 2801void test26() 2802{ 2803 test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 1, 7); 2804 test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 2, 6); 2805 test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 3, 5); 2806 test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 4, 4); 2807 test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 5, 4); 2808 test(S("abcdefghij"), 1, 8, SV("abcde"), 2, 0, 8); 2809 test(S("abcdefghij"), 1, 8, SV("abcde"), 2, 1, -1); 2810 test(S("abcdefghij"), 1, 8, SV("abcde"), 2, 2, -1); 2811 test(S("abcdefghij"), 1, 8, SV("abcde"), 2, 3, -1); 2812 test(S("abcdefghij"), 1, 8, SV("abcde"), 2, 4, -1); 2813 test(S("abcdefghij"), 1, 8, SV("abcde"), 4, 0, 8); 2814 test(S("abcdefghij"), 1, 8, SV("abcde"), 4, 1, -3); 2815 test(S("abcdefghij"), 1, 8, SV("abcde"), 4, 2, -3); 2816 test(S("abcdefghij"), 1, 8, SV("abcde"), 5, 0, 8); 2817 test(S("abcdefghij"), 1, 8, SV("abcde"), 5, 1, 8); 2818 test(S("abcdefghij"), 1, 8, SV("abcde"), 6, 0, 0); 2819 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 0, 8); 2820 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 1, 1); 2821 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 5, 1); 2822 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 9, 1); 2823 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 10, 1); 2824 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 11, 1); 2825 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 0, 8); 2826 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 1, 7); 2827 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 4, 4); 2828 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 8, 0); 2829 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 9, -1); 2830 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 10, -1); 2831 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 0, 8); 2832 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 1, -4); 2833 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 2, -4); 2834 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 4, -4); 2835 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 5, -4); 2836 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 6, -4); 2837 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 9, 0, 8); 2838 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 9, 1, -8); 2839 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 9, 2, -8); 2840 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 10, 0, 8); 2841 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 10, 1, 8); 2842 test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 11, 0, 0); 2843 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 0, 8); 2844 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 1, 1); 2845 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 10, 1); 2846 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 19, 1); 2847 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 20, 1); 2848 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 21, 1); 2849 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 0, 8); 2850 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 1, 7); 2851 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 9, -1); 2852 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 18, -10); 2853 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 19, -11); 2854 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 20, -11); 2855 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 0, 8); 2856 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 1, -9); 2857 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 5, -9); 2858 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 9, -9); 2859 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 10, -9); 2860 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 11, -9); 2861 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 19, 0, 8); 2862 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 19, 1, -18); 2863 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 19, 2, -18); 2864 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 20, 0, 8); 2865 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 20, 1, 8); 2866 test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 21, 0, 0); 2867 test(S("abcdefghij"), 1, 9, SV(""), 0, 0, 9); 2868 test(S("abcdefghij"), 1, 9, SV(""), 0, 1, 9); 2869 test(S("abcdefghij"), 1, 9, SV(""), 1, 0, 0); 2870 test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 0, 9); 2871 test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 1, 1); 2872 test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 2, 1); 2873 test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 4, 1); 2874 test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 5, 1); 2875 test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 6, 1); 2876 test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 0, 9); 2877 test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 1, 8); 2878 test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 2, 7); 2879 test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 3, 6); 2880 test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 4, 5); 2881 test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 5, 5); 2882 test(S("abcdefghij"), 1, 9, SV("abcde"), 2, 0, 9); 2883 test(S("abcdefghij"), 1, 9, SV("abcde"), 2, 1, -1); 2884 test(S("abcdefghij"), 1, 9, SV("abcde"), 2, 2, -1); 2885 test(S("abcdefghij"), 1, 9, SV("abcde"), 2, 3, -1); 2886 test(S("abcdefghij"), 1, 9, SV("abcde"), 2, 4, -1); 2887 test(S("abcdefghij"), 1, 9, SV("abcde"), 4, 0, 9); 2888 test(S("abcdefghij"), 1, 9, SV("abcde"), 4, 1, -3); 2889 test(S("abcdefghij"), 1, 9, SV("abcde"), 4, 2, -3); 2890 test(S("abcdefghij"), 1, 9, SV("abcde"), 5, 0, 9); 2891 test(S("abcdefghij"), 1, 9, SV("abcde"), 5, 1, 9); 2892 test(S("abcdefghij"), 1, 9, SV("abcde"), 6, 0, 0); 2893 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 0, 9); 2894 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 1, 1); 2895 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 5, 1); 2896 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 9, 1); 2897 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 10, 1); 2898 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 11, 1); 2899 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 0, 9); 2900 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 1, 8); 2901 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 4, 5); 2902 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 8, 1); 2903} 2904 2905template <class S, class SV> 2906void test27() 2907{ 2908 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 9, 0); 2909 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 10, 0); 2910 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 0, 9); 2911 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 1, -4); 2912 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 2, -4); 2913 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 4, -4); 2914 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 5, -4); 2915 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 6, -4); 2916 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 9, 0, 9); 2917 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 9, 1, -8); 2918 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 9, 2, -8); 2919 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 10, 0, 9); 2920 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 10, 1, 9); 2921 test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 11, 0, 0); 2922 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 0, 9); 2923 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 1, 1); 2924 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 10, 1); 2925 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 19, 1); 2926 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 20, 1); 2927 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 21, 1); 2928 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 0, 9); 2929 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 1, 8); 2930 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 9, 0); 2931 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 18, -9); 2932 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 19, -10); 2933 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 20, -10); 2934 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 0, 9); 2935 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 1, -9); 2936 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 5, -9); 2937 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 9, -9); 2938 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 10, -9); 2939 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 11, -9); 2940 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 0, 9); 2941 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 1, -18); 2942 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 2, -18); 2943 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 20, 0, 9); 2944 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 20, 1, 9); 2945 test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 21, 0, 0); 2946 test(S("abcdefghij"), 1, 10, SV(""), 0, 0, 9); 2947 test(S("abcdefghij"), 1, 10, SV(""), 0, 1, 9); 2948 test(S("abcdefghij"), 1, 10, SV(""), 1, 0, 0); 2949 test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 0, 9); 2950 test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 1, 1); 2951 test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 2, 1); 2952 test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 4, 1); 2953 test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 5, 1); 2954 test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 6, 1); 2955 test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 0, 9); 2956 test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 1, 8); 2957 test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 2, 7); 2958 test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 3, 6); 2959 test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 4, 5); 2960 test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 5, 5); 2961 test(S("abcdefghij"), 1, 10, SV("abcde"), 2, 0, 9); 2962 test(S("abcdefghij"), 1, 10, SV("abcde"), 2, 1, -1); 2963 test(S("abcdefghij"), 1, 10, SV("abcde"), 2, 2, -1); 2964 test(S("abcdefghij"), 1, 10, SV("abcde"), 2, 3, -1); 2965 test(S("abcdefghij"), 1, 10, SV("abcde"), 2, 4, -1); 2966 test(S("abcdefghij"), 1, 10, SV("abcde"), 4, 0, 9); 2967 test(S("abcdefghij"), 1, 10, SV("abcde"), 4, 1, -3); 2968 test(S("abcdefghij"), 1, 10, SV("abcde"), 4, 2, -3); 2969 test(S("abcdefghij"), 1, 10, SV("abcde"), 5, 0, 9); 2970 test(S("abcdefghij"), 1, 10, SV("abcde"), 5, 1, 9); 2971 test(S("abcdefghij"), 1, 10, SV("abcde"), 6, 0, 0); 2972 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 0, 9); 2973 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 1, 1); 2974 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 5, 1); 2975 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 9, 1); 2976 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 10, 1); 2977 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 11, 1); 2978 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 0, 9); 2979 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 1, 8); 2980 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 4, 5); 2981 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 8, 1); 2982 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 9, 0); 2983 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 10, 0); 2984 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 0, 9); 2985 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 1, -4); 2986 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 2, -4); 2987 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 4, -4); 2988 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 5, -4); 2989 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 6, -4); 2990 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 9, 0, 9); 2991 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 9, 1, -8); 2992 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 9, 2, -8); 2993 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 10, 0, 9); 2994 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 10, 1, 9); 2995 test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 11, 0, 0); 2996 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 0, 9); 2997 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 1, 1); 2998 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 10, 1); 2999 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 19, 1); 3000 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 20, 1); 3001 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 21, 1); 3002 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 0, 9); 3003 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 1, 8); 3004 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 9, 0); 3005 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 18, -9); 3006 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 19, -10); 3007 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 20, -10); 3008} 3009 3010template <class S, class SV> 3011void test28() 3012{ 3013 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 0, 9); 3014 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 1, -9); 3015 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 5, -9); 3016 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 9, -9); 3017 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 10, -9); 3018 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 11, -9); 3019 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 19, 0, 9); 3020 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 19, 1, -18); 3021 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 19, 2, -18); 3022 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 20, 0, 9); 3023 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 20, 1, 9); 3024 test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 21, 0, 0); 3025 test(S("abcdefghij"), 5, 0, SV(""), 0, 0, 0); 3026 test(S("abcdefghij"), 5, 0, SV(""), 0, 1, 0); 3027 test(S("abcdefghij"), 5, 0, SV(""), 1, 0, 0); 3028 test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 0, 0); 3029 test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 1, -1); 3030 test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 2, -2); 3031 test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 4, -4); 3032 test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 5, -5); 3033 test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 6, -5); 3034 test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 0, 0); 3035 test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 1, -1); 3036 test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 2, -2); 3037 test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 3, -3); 3038 test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 4, -4); 3039 test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 5, -4); 3040 test(S("abcdefghij"), 5, 0, SV("abcde"), 2, 0, 0); 3041 test(S("abcdefghij"), 5, 0, SV("abcde"), 2, 1, -1); 3042 test(S("abcdefghij"), 5, 0, SV("abcde"), 2, 2, -2); 3043 test(S("abcdefghij"), 5, 0, SV("abcde"), 2, 3, -3); 3044 test(S("abcdefghij"), 5, 0, SV("abcde"), 2, 4, -3); 3045 test(S("abcdefghij"), 5, 0, SV("abcde"), 4, 0, 0); 3046 test(S("abcdefghij"), 5, 0, SV("abcde"), 4, 1, -1); 3047 test(S("abcdefghij"), 5, 0, SV("abcde"), 4, 2, -1); 3048 test(S("abcdefghij"), 5, 0, SV("abcde"), 5, 0, 0); 3049 test(S("abcdefghij"), 5, 0, SV("abcde"), 5, 1, 0); 3050 test(S("abcdefghij"), 5, 0, SV("abcde"), 6, 0, 0); 3051 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 0, 0); 3052 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 1, -1); 3053 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 5, -5); 3054 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 9, -9); 3055 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 10, -10); 3056 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 11, -10); 3057 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 0, 0); 3058 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 1, -1); 3059 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 4, -4); 3060 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 8, -8); 3061 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 9, -9); 3062 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 10, -9); 3063 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 0, 0); 3064 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 1, -1); 3065 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 2, -2); 3066 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 4, -4); 3067 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 5, -5); 3068 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 6, -5); 3069 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 9, 0, 0); 3070 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 9, 1, -1); 3071 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 9, 2, -1); 3072 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 10, 0, 0); 3073 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 10, 1, 0); 3074 test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 11, 0, 0); 3075 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); 3076 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); 3077 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); 3078 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); 3079 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); 3080 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); 3081 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); 3082 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); 3083 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); 3084 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); 3085 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); 3086 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); 3087 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); 3088 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); 3089 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); 3090 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); 3091 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); 3092 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); 3093 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); 3094 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); 3095 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); 3096 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); 3097 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); 3098 test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); 3099 test(S("abcdefghij"), 5, 1, SV(""), 0, 0, 1); 3100 test(S("abcdefghij"), 5, 1, SV(""), 0, 1, 1); 3101 test(S("abcdefghij"), 5, 1, SV(""), 1, 0, 0); 3102 test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 0, 1); 3103 test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 1, 5); 3104 test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 2, 5); 3105 test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 4, 5); 3106 test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 5, 5); 3107 test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 6, 5); 3108 test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 0, 1); 3109 test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 1, 4); 3110 test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 2, 4); 3111 test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 3, 4); 3112 test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 4, 4); 3113} 3114 3115template <class S, class SV> 3116void test29() 3117{ 3118 test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 5, 4); 3119 test(S("abcdefghij"), 5, 1, SV("abcde"), 2, 0, 1); 3120 test(S("abcdefghij"), 5, 1, SV("abcde"), 2, 1, 3); 3121 test(S("abcdefghij"), 5, 1, SV("abcde"), 2, 2, 3); 3122 test(S("abcdefghij"), 5, 1, SV("abcde"), 2, 3, 3); 3123 test(S("abcdefghij"), 5, 1, SV("abcde"), 2, 4, 3); 3124 test(S("abcdefghij"), 5, 1, SV("abcde"), 4, 0, 1); 3125 test(S("abcdefghij"), 5, 1, SV("abcde"), 4, 1, 1); 3126 test(S("abcdefghij"), 5, 1, SV("abcde"), 4, 2, 1); 3127 test(S("abcdefghij"), 5, 1, SV("abcde"), 5, 0, 1); 3128 test(S("abcdefghij"), 5, 1, SV("abcde"), 5, 1, 1); 3129 test(S("abcdefghij"), 5, 1, SV("abcde"), 6, 0, 0); 3130 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 0, 1); 3131 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 1, 5); 3132 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 5, 5); 3133 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 9, 5); 3134 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 10, 5); 3135 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 11, 5); 3136 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 0, 1); 3137 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 1, 4); 3138 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 4, 4); 3139 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 8, 4); 3140 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 9, 4); 3141 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 10, 4); 3142 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 0, 1); 3143 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 1, 0); 3144 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 2, -1); 3145 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 4, -3); 3146 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 5, -4); 3147 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 6, -4); 3148 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 9, 0, 1); 3149 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 9, 1, -4); 3150 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 9, 2, -4); 3151 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 10, 0, 1); 3152 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 10, 1, 1); 3153 test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 11, 0, 0); 3154 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); 3155 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 1, 5); 3156 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 10, 5); 3157 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 19, 5); 3158 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 20, 5); 3159 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 21, 5); 3160 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); 3161 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 1, 4); 3162 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 9, 4); 3163 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 18, 4); 3164 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 19, 4); 3165 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 20, 4); 3166 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); 3167 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 1, -5); 3168 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 5, -5); 3169 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 9, -5); 3170 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 10, -5); 3171 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 11, -5); 3172 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); 3173 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 1, -14); 3174 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 2, -14); 3175 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); 3176 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); 3177 test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); 3178 test(S("abcdefghij"), 5, 2, SV(""), 0, 0, 2); 3179 test(S("abcdefghij"), 5, 2, SV(""), 0, 1, 2); 3180 test(S("abcdefghij"), 5, 2, SV(""), 1, 0, 0); 3181 test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 0, 2); 3182 test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 1, 5); 3183 test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 2, 5); 3184 test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 4, 5); 3185 test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 5, 5); 3186 test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 6, 5); 3187 test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 0, 2); 3188 test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 1, 4); 3189 test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 2, 4); 3190 test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 3, 4); 3191 test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 4, 4); 3192 test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 5, 4); 3193 test(S("abcdefghij"), 5, 2, SV("abcde"), 2, 0, 2); 3194 test(S("abcdefghij"), 5, 2, SV("abcde"), 2, 1, 3); 3195 test(S("abcdefghij"), 5, 2, SV("abcde"), 2, 2, 3); 3196 test(S("abcdefghij"), 5, 2, SV("abcde"), 2, 3, 3); 3197 test(S("abcdefghij"), 5, 2, SV("abcde"), 2, 4, 3); 3198 test(S("abcdefghij"), 5, 2, SV("abcde"), 4, 0, 2); 3199 test(S("abcdefghij"), 5, 2, SV("abcde"), 4, 1, 1); 3200 test(S("abcdefghij"), 5, 2, SV("abcde"), 4, 2, 1); 3201 test(S("abcdefghij"), 5, 2, SV("abcde"), 5, 0, 2); 3202 test(S("abcdefghij"), 5, 2, SV("abcde"), 5, 1, 2); 3203 test(S("abcdefghij"), 5, 2, SV("abcde"), 6, 0, 0); 3204 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 0, 2); 3205 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 1, 5); 3206 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 5, 5); 3207 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 9, 5); 3208 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 10, 5); 3209 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 11, 5); 3210 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 0, 2); 3211 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 1, 4); 3212 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 4, 4); 3213 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 8, 4); 3214 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 9, 4); 3215 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 10, 4); 3216 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 0, 2); 3217 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 1, 1); 3218} 3219 3220template <class S, class SV> 3221void test30() 3222{ 3223 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 2, 0); 3224 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 4, -2); 3225 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 5, -3); 3226 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 6, -3); 3227 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 9, 0, 2); 3228 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 9, 1, -4); 3229 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 9, 2, -4); 3230 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 10, 0, 2); 3231 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 10, 1, 2); 3232 test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 11, 0, 0); 3233 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 0, 2); 3234 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 1, 5); 3235 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 10, 5); 3236 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 19, 5); 3237 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 20, 5); 3238 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 21, 5); 3239 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 0, 2); 3240 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 1, 4); 3241 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 9, 4); 3242 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 18, 4); 3243 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 19, 4); 3244 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 20, 4); 3245 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 0, 2); 3246 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 1, -5); 3247 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 5, -5); 3248 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 9, -5); 3249 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 10, -5); 3250 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 11, -5); 3251 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 19, 0, 2); 3252 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 19, 1, -14); 3253 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 19, 2, -14); 3254 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 20, 0, 2); 3255 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 20, 1, 2); 3256 test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); 3257 test(S("abcdefghij"), 5, 4, SV(""), 0, 0, 4); 3258 test(S("abcdefghij"), 5, 4, SV(""), 0, 1, 4); 3259 test(S("abcdefghij"), 5, 4, SV(""), 1, 0, 0); 3260 test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 0, 4); 3261 test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 1, 5); 3262 test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 2, 5); 3263 test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 4, 5); 3264 test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 5, 5); 3265 test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 6, 5); 3266 test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 0, 4); 3267 test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 1, 4); 3268 test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 2, 4); 3269 test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 3, 4); 3270 test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 4, 4); 3271 test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 5, 4); 3272 test(S("abcdefghij"), 5, 4, SV("abcde"), 2, 0, 4); 3273 test(S("abcdefghij"), 5, 4, SV("abcde"), 2, 1, 3); 3274 test(S("abcdefghij"), 5, 4, SV("abcde"), 2, 2, 3); 3275 test(S("abcdefghij"), 5, 4, SV("abcde"), 2, 3, 3); 3276 test(S("abcdefghij"), 5, 4, SV("abcde"), 2, 4, 3); 3277 test(S("abcdefghij"), 5, 4, SV("abcde"), 4, 0, 4); 3278 test(S("abcdefghij"), 5, 4, SV("abcde"), 4, 1, 1); 3279 test(S("abcdefghij"), 5, 4, SV("abcde"), 4, 2, 1); 3280 test(S("abcdefghij"), 5, 4, SV("abcde"), 5, 0, 4); 3281 test(S("abcdefghij"), 5, 4, SV("abcde"), 5, 1, 4); 3282 test(S("abcdefghij"), 5, 4, SV("abcde"), 6, 0, 0); 3283 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 0, 4); 3284 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 1, 5); 3285 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 5, 5); 3286 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 9, 5); 3287 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 10, 5); 3288 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 11, 5); 3289 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 0, 4); 3290 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 1, 4); 3291 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 4, 4); 3292 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 8, 4); 3293 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 9, 4); 3294 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 10, 4); 3295 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 0, 4); 3296 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 1, 3); 3297 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 2, 2); 3298 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 4, 0); 3299 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 5, -1); 3300 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 6, -1); 3301 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 9, 0, 4); 3302 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 9, 1, -4); 3303 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 9, 2, -4); 3304 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 10, 0, 4); 3305 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 10, 1, 4); 3306 test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 11, 0, 0); 3307 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 0, 4); 3308 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 1, 5); 3309 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 10, 5); 3310 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 19, 5); 3311 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 20, 5); 3312 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 21, 5); 3313 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 0, 4); 3314 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 1, 4); 3315 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 9, 4); 3316 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 18, 4); 3317 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 19, 4); 3318 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 20, 4); 3319 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 0, 4); 3320 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 1, -5); 3321 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 5, -5); 3322 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 9, -5); 3323} 3324 3325template <class S, class SV> 3326void test31() 3327{ 3328 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 10, -5); 3329 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 11, -5); 3330 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 19, 0, 4); 3331 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 19, 1, -14); 3332 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 19, 2, -14); 3333 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 20, 0, 4); 3334 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 20, 1, 4); 3335 test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 21, 0, 0); 3336 test(S("abcdefghij"), 5, 5, SV(""), 0, 0, 5); 3337 test(S("abcdefghij"), 5, 5, SV(""), 0, 1, 5); 3338 test(S("abcdefghij"), 5, 5, SV(""), 1, 0, 0); 3339 test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 0, 5); 3340 test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 1, 5); 3341 test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 2, 5); 3342 test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 4, 5); 3343 test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 5, 5); 3344 test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 6, 5); 3345 test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 0, 5); 3346 test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 1, 4); 3347 test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 2, 4); 3348 test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 3, 4); 3349 test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 4, 4); 3350 test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 5, 4); 3351 test(S("abcdefghij"), 5, 5, SV("abcde"), 2, 0, 5); 3352 test(S("abcdefghij"), 5, 5, SV("abcde"), 2, 1, 3); 3353 test(S("abcdefghij"), 5, 5, SV("abcde"), 2, 2, 3); 3354 test(S("abcdefghij"), 5, 5, SV("abcde"), 2, 3, 3); 3355 test(S("abcdefghij"), 5, 5, SV("abcde"), 2, 4, 3); 3356 test(S("abcdefghij"), 5, 5, SV("abcde"), 4, 0, 5); 3357 test(S("abcdefghij"), 5, 5, SV("abcde"), 4, 1, 1); 3358 test(S("abcdefghij"), 5, 5, SV("abcde"), 4, 2, 1); 3359 test(S("abcdefghij"), 5, 5, SV("abcde"), 5, 0, 5); 3360 test(S("abcdefghij"), 5, 5, SV("abcde"), 5, 1, 5); 3361 test(S("abcdefghij"), 5, 5, SV("abcde"), 6, 0, 0); 3362 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 0, 5); 3363 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 1, 5); 3364 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 5, 5); 3365 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 9, 5); 3366 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 10, 5); 3367 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 11, 5); 3368 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 0, 5); 3369 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 1, 4); 3370 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 4, 4); 3371 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 8, 4); 3372 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 9, 4); 3373 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 10, 4); 3374 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 0, 5); 3375 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 1, 4); 3376 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 2, 3); 3377 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 4, 1); 3378 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 5, 0); 3379 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 6, 0); 3380 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 9, 0, 5); 3381 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 9, 1, -4); 3382 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 9, 2, -4); 3383 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 10, 0, 5); 3384 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 10, 1, 5); 3385 test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 11, 0, 0); 3386 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 0, 5); 3387 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 1, 5); 3388 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 10, 5); 3389 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 19, 5); 3390 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 20, 5); 3391 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 21, 5); 3392 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 0, 5); 3393 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 1, 4); 3394 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 9, 4); 3395 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 18, 4); 3396 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 19, 4); 3397 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 20, 4); 3398 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 0, 5); 3399 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 1, -5); 3400 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 5, -5); 3401 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 9, -5); 3402 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 10, -5); 3403 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 11, -5); 3404 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 19, 0, 5); 3405 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 19, 1, -14); 3406 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 19, 2, -14); 3407 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 20, 0, 5); 3408 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 20, 1, 5); 3409 test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 21, 0, 0); 3410 test(S("abcdefghij"), 5, 6, SV(""), 0, 0, 5); 3411 test(S("abcdefghij"), 5, 6, SV(""), 0, 1, 5); 3412 test(S("abcdefghij"), 5, 6, SV(""), 1, 0, 0); 3413 test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 0, 5); 3414 test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 1, 5); 3415 test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 2, 5); 3416 test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 4, 5); 3417 test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 5, 5); 3418 test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 6, 5); 3419 test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 0, 5); 3420 test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 1, 4); 3421 test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 2, 4); 3422 test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 3, 4); 3423 test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 4, 4); 3424 test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 5, 4); 3425 test(S("abcdefghij"), 5, 6, SV("abcde"), 2, 0, 5); 3426 test(S("abcdefghij"), 5, 6, SV("abcde"), 2, 1, 3); 3427 test(S("abcdefghij"), 5, 6, SV("abcde"), 2, 2, 3); 3428} 3429 3430template <class S, class SV> 3431void test32() 3432{ 3433 test(S("abcdefghij"), 5, 6, SV("abcde"), 2, 3, 3); 3434 test(S("abcdefghij"), 5, 6, SV("abcde"), 2, 4, 3); 3435 test(S("abcdefghij"), 5, 6, SV("abcde"), 4, 0, 5); 3436 test(S("abcdefghij"), 5, 6, SV("abcde"), 4, 1, 1); 3437 test(S("abcdefghij"), 5, 6, SV("abcde"), 4, 2, 1); 3438 test(S("abcdefghij"), 5, 6, SV("abcde"), 5, 0, 5); 3439 test(S("abcdefghij"), 5, 6, SV("abcde"), 5, 1, 5); 3440 test(S("abcdefghij"), 5, 6, SV("abcde"), 6, 0, 0); 3441 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 0, 5); 3442 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 1, 5); 3443 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 5, 5); 3444 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 9, 5); 3445 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 10, 5); 3446 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 11, 5); 3447 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 0, 5); 3448 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 1, 4); 3449 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 4, 4); 3450 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 8, 4); 3451 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 9, 4); 3452 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 10, 4); 3453 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 0, 5); 3454 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 1, 4); 3455 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 2, 3); 3456 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 4, 1); 3457 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 5, 0); 3458 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 6, 0); 3459 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 9, 0, 5); 3460 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 9, 1, -4); 3461 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 9, 2, -4); 3462 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 10, 0, 5); 3463 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 10, 1, 5); 3464 test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 11, 0, 0); 3465 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 0, 5); 3466 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 1, 5); 3467 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 10, 5); 3468 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 19, 5); 3469 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 20, 5); 3470 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 21, 5); 3471 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 0, 5); 3472 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 1, 4); 3473 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 9, 4); 3474 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 18, 4); 3475 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 19, 4); 3476 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 20, 4); 3477 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 0, 5); 3478 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 1, -5); 3479 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 5, -5); 3480 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 9, -5); 3481 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 10, -5); 3482 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 11, -5); 3483 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 19, 0, 5); 3484 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 19, 1, -14); 3485 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 19, 2, -14); 3486 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 20, 0, 5); 3487 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 20, 1, 5); 3488 test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 21, 0, 0); 3489 test(S("abcdefghij"), 9, 0, SV(""), 0, 0, 0); 3490 test(S("abcdefghij"), 9, 0, SV(""), 0, 1, 0); 3491 test(S("abcdefghij"), 9, 0, SV(""), 1, 0, 0); 3492 test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 0, 0); 3493 test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 1, -1); 3494 test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 2, -2); 3495 test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 4, -4); 3496 test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 5, -5); 3497 test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 6, -5); 3498 test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 0, 0); 3499 test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 1, -1); 3500 test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 2, -2); 3501 test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 3, -3); 3502 test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 4, -4); 3503 test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 5, -4); 3504 test(S("abcdefghij"), 9, 0, SV("abcde"), 2, 0, 0); 3505 test(S("abcdefghij"), 9, 0, SV("abcde"), 2, 1, -1); 3506 test(S("abcdefghij"), 9, 0, SV("abcde"), 2, 2, -2); 3507 test(S("abcdefghij"), 9, 0, SV("abcde"), 2, 3, -3); 3508 test(S("abcdefghij"), 9, 0, SV("abcde"), 2, 4, -3); 3509 test(S("abcdefghij"), 9, 0, SV("abcde"), 4, 0, 0); 3510 test(S("abcdefghij"), 9, 0, SV("abcde"), 4, 1, -1); 3511 test(S("abcdefghij"), 9, 0, SV("abcde"), 4, 2, -1); 3512 test(S("abcdefghij"), 9, 0, SV("abcde"), 5, 0, 0); 3513 test(S("abcdefghij"), 9, 0, SV("abcde"), 5, 1, 0); 3514 test(S("abcdefghij"), 9, 0, SV("abcde"), 6, 0, 0); 3515 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 0, 0); 3516 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 1, -1); 3517 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 5, -5); 3518 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 9, -9); 3519 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 10, -10); 3520 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 11, -10); 3521 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 0, 0); 3522 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 1, -1); 3523 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 4, -4); 3524 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 8, -8); 3525 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 9, -9); 3526 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 10, -9); 3527 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 0, 0); 3528 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 1, -1); 3529 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 2, -2); 3530 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 4, -4); 3531 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 5, -5); 3532 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 6, -5); 3533} 3534 3535template <class S, class SV> 3536void test33() 3537{ 3538 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 9, 0, 0); 3539 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 9, 1, -1); 3540 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 9, 2, -1); 3541 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 10, 0, 0); 3542 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 10, 1, 0); 3543 test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 11, 0, 0); 3544 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); 3545 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); 3546 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); 3547 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); 3548 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); 3549 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); 3550 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); 3551 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); 3552 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); 3553 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); 3554 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); 3555 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); 3556 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); 3557 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); 3558 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); 3559 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); 3560 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); 3561 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); 3562 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); 3563 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); 3564 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); 3565 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); 3566 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); 3567 test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); 3568 test(S("abcdefghij"), 9, 1, SV(""), 0, 0, 1); 3569 test(S("abcdefghij"), 9, 1, SV(""), 0, 1, 1); 3570 test(S("abcdefghij"), 9, 1, SV(""), 1, 0, 0); 3571 test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 0, 1); 3572 test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 1, 9); 3573 test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 2, 9); 3574 test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 4, 9); 3575 test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 5, 9); 3576 test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 6, 9); 3577 test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 0, 1); 3578 test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 1, 8); 3579 test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 2, 8); 3580 test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 3, 8); 3581 test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 4, 8); 3582 test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 5, 8); 3583 test(S("abcdefghij"), 9, 1, SV("abcde"), 2, 0, 1); 3584 test(S("abcdefghij"), 9, 1, SV("abcde"), 2, 1, 7); 3585 test(S("abcdefghij"), 9, 1, SV("abcde"), 2, 2, 7); 3586 test(S("abcdefghij"), 9, 1, SV("abcde"), 2, 3, 7); 3587 test(S("abcdefghij"), 9, 1, SV("abcde"), 2, 4, 7); 3588 test(S("abcdefghij"), 9, 1, SV("abcde"), 4, 0, 1); 3589 test(S("abcdefghij"), 9, 1, SV("abcde"), 4, 1, 5); 3590 test(S("abcdefghij"), 9, 1, SV("abcde"), 4, 2, 5); 3591 test(S("abcdefghij"), 9, 1, SV("abcde"), 5, 0, 1); 3592 test(S("abcdefghij"), 9, 1, SV("abcde"), 5, 1, 1); 3593 test(S("abcdefghij"), 9, 1, SV("abcde"), 6, 0, 0); 3594 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 0, 1); 3595 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 1, 9); 3596 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 5, 9); 3597 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 9, 9); 3598 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 10, 9); 3599 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 11, 9); 3600 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 0, 1); 3601 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 1, 8); 3602 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 4, 8); 3603 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 8, 8); 3604 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 9, 8); 3605 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 10, 8); 3606 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 0, 1); 3607 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 1, 4); 3608 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 2, 4); 3609 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 4, 4); 3610 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 5, 4); 3611 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 6, 4); 3612 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 9, 0, 1); 3613 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 9, 1, 0); 3614 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 9, 2, 0); 3615 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 10, 0, 1); 3616 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 10, 1, 1); 3617 test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 11, 0, 0); 3618 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); 3619 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 1, 9); 3620 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 10, 9); 3621 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 19, 9); 3622 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 20, 9); 3623 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 21, 9); 3624 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); 3625 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 1, 8); 3626 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 9, 8); 3627 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 18, 8); 3628 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 19, 8); 3629 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 20, 8); 3630 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); 3631 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 1, -1); 3632 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 5, -1); 3633 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 9, -1); 3634 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 10, -1); 3635 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 11, -1); 3636 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); 3637 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 19, 1, -10); 3638} 3639 3640template <class S, class SV> 3641void test34() 3642{ 3643 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 19, 2, -10); 3644 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); 3645 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); 3646 test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); 3647 test(S("abcdefghij"), 9, 2, SV(""), 0, 0, 1); 3648 test(S("abcdefghij"), 9, 2, SV(""), 0, 1, 1); 3649 test(S("abcdefghij"), 9, 2, SV(""), 1, 0, 0); 3650 test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 0, 1); 3651 test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 1, 9); 3652 test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 2, 9); 3653 test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 4, 9); 3654 test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 5, 9); 3655 test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 6, 9); 3656 test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 0, 1); 3657 test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 1, 8); 3658 test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 2, 8); 3659 test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 3, 8); 3660 test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 4, 8); 3661 test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 5, 8); 3662 test(S("abcdefghij"), 9, 2, SV("abcde"), 2, 0, 1); 3663 test(S("abcdefghij"), 9, 2, SV("abcde"), 2, 1, 7); 3664 test(S("abcdefghij"), 9, 2, SV("abcde"), 2, 2, 7); 3665 test(S("abcdefghij"), 9, 2, SV("abcde"), 2, 3, 7); 3666 test(S("abcdefghij"), 9, 2, SV("abcde"), 2, 4, 7); 3667 test(S("abcdefghij"), 9, 2, SV("abcde"), 4, 0, 1); 3668 test(S("abcdefghij"), 9, 2, SV("abcde"), 4, 1, 5); 3669 test(S("abcdefghij"), 9, 2, SV("abcde"), 4, 2, 5); 3670 test(S("abcdefghij"), 9, 2, SV("abcde"), 5, 0, 1); 3671 test(S("abcdefghij"), 9, 2, SV("abcde"), 5, 1, 1); 3672 test(S("abcdefghij"), 9, 2, SV("abcde"), 6, 0, 0); 3673 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 0, 1); 3674 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 1, 9); 3675 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 5, 9); 3676 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 9, 9); 3677 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 10, 9); 3678 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 11, 9); 3679 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 0, 1); 3680 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 1, 8); 3681 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 4, 8); 3682 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 8, 8); 3683 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 9, 8); 3684 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 10, 8); 3685 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 0, 1); 3686 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 1, 4); 3687 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 2, 4); 3688 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 4, 4); 3689 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 5, 4); 3690 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 6, 4); 3691 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 9, 0, 1); 3692 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 9, 1, 0); 3693 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 9, 2, 0); 3694 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 10, 0, 1); 3695 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 10, 1, 1); 3696 test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 11, 0, 0); 3697 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 0, 1); 3698 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 1, 9); 3699 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 10, 9); 3700 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 19, 9); 3701 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 20, 9); 3702 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 21, 9); 3703 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 0, 1); 3704 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 1, 8); 3705 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 9, 8); 3706 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 18, 8); 3707 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 19, 8); 3708 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 20, 8); 3709 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 0, 1); 3710 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 1, -1); 3711 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 5, -1); 3712 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 9, -1); 3713 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 10, -1); 3714 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 11, -1); 3715 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 19, 0, 1); 3716 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 19, 1, -10); 3717 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 19, 2, -10); 3718 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 20, 0, 1); 3719 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 20, 1, 1); 3720 test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); 3721 test(S("abcdefghij"), 10, 0, SV(""), 0, 0, 0); 3722 test(S("abcdefghij"), 10, 0, SV(""), 0, 1, 0); 3723 test(S("abcdefghij"), 10, 0, SV(""), 1, 0, 0); 3724 test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 0, 0); 3725 test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 1, -1); 3726 test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 2, -2); 3727 test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 4, -4); 3728 test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 5, -5); 3729 test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 6, -5); 3730 test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 0, 0); 3731 test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 1, -1); 3732 test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 2, -2); 3733 test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 3, -3); 3734 test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 4, -4); 3735 test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 5, -4); 3736 test(S("abcdefghij"), 10, 0, SV("abcde"), 2, 0, 0); 3737 test(S("abcdefghij"), 10, 0, SV("abcde"), 2, 1, -1); 3738 test(S("abcdefghij"), 10, 0, SV("abcde"), 2, 2, -2); 3739 test(S("abcdefghij"), 10, 0, SV("abcde"), 2, 3, -3); 3740 test(S("abcdefghij"), 10, 0, SV("abcde"), 2, 4, -3); 3741 test(S("abcdefghij"), 10, 0, SV("abcde"), 4, 0, 0); 3742 test(S("abcdefghij"), 10, 0, SV("abcde"), 4, 1, -1); 3743} 3744 3745template <class S, class SV> 3746void test35() 3747{ 3748 test(S("abcdefghij"), 10, 0, SV("abcde"), 4, 2, -1); 3749 test(S("abcdefghij"), 10, 0, SV("abcde"), 5, 0, 0); 3750 test(S("abcdefghij"), 10, 0, SV("abcde"), 5, 1, 0); 3751 test(S("abcdefghij"), 10, 0, SV("abcde"), 6, 0, 0); 3752 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 0, 0); 3753 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 1, -1); 3754 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 5, -5); 3755 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 9, -9); 3756 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 10, -10); 3757 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 11, -10); 3758 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 0, 0); 3759 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 1, -1); 3760 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 4, -4); 3761 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 8, -8); 3762 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 9, -9); 3763 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 10, -9); 3764 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 0, 0); 3765 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 1, -1); 3766 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 2, -2); 3767 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 4, -4); 3768 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 5, -5); 3769 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 6, -5); 3770 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 9, 0, 0); 3771 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 9, 1, -1); 3772 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 9, 2, -1); 3773 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 10, 0, 0); 3774 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 10, 1, 0); 3775 test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 11, 0, 0); 3776 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); 3777 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); 3778 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); 3779 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); 3780 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); 3781 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); 3782 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); 3783 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); 3784 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); 3785 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); 3786 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); 3787 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); 3788 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); 3789 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); 3790 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); 3791 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); 3792 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); 3793 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); 3794 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); 3795 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); 3796 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); 3797 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); 3798 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); 3799 test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); 3800 test(S("abcdefghij"), 10, 1, SV(""), 0, 0, 0); 3801 test(S("abcdefghij"), 10, 1, SV(""), 0, 1, 0); 3802 test(S("abcdefghij"), 10, 1, SV(""), 1, 0, 0); 3803 test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 0, 0); 3804 test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 1, -1); 3805 test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 2, -2); 3806 test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 4, -4); 3807 test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 5, -5); 3808 test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 6, -5); 3809 test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 0, 0); 3810 test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 1, -1); 3811 test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 2, -2); 3812 test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 3, -3); 3813 test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 4, -4); 3814 test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 5, -4); 3815 test(S("abcdefghij"), 10, 1, SV("abcde"), 2, 0, 0); 3816 test(S("abcdefghij"), 10, 1, SV("abcde"), 2, 1, -1); 3817 test(S("abcdefghij"), 10, 1, SV("abcde"), 2, 2, -2); 3818 test(S("abcdefghij"), 10, 1, SV("abcde"), 2, 3, -3); 3819 test(S("abcdefghij"), 10, 1, SV("abcde"), 2, 4, -3); 3820 test(S("abcdefghij"), 10, 1, SV("abcde"), 4, 0, 0); 3821 test(S("abcdefghij"), 10, 1, SV("abcde"), 4, 1, -1); 3822 test(S("abcdefghij"), 10, 1, SV("abcde"), 4, 2, -1); 3823 test(S("abcdefghij"), 10, 1, SV("abcde"), 5, 0, 0); 3824 test(S("abcdefghij"), 10, 1, SV("abcde"), 5, 1, 0); 3825 test(S("abcdefghij"), 10, 1, SV("abcde"), 6, 0, 0); 3826 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 0, 0); 3827 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 1, -1); 3828 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 5, -5); 3829 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 9, -9); 3830 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 10, -10); 3831 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 11, -10); 3832 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 0, 0); 3833 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 1, -1); 3834 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 4, -4); 3835 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 8, -8); 3836 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 9, -9); 3837 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 10, -9); 3838 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 0, 0); 3839 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 1, -1); 3840 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 2, -2); 3841 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 4, -4); 3842 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 5, -5); 3843 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 6, -5); 3844 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 9, 0, 0); 3845 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 9, 1, -1); 3846 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 9, 2, -1); 3847 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 10, 0, 0); 3848} 3849 3850template <class S, class SV> 3851void test36() 3852{ 3853 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 10, 1, 0); 3854 test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 11, 0, 0); 3855 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 0, 0); 3856 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 1, -1); 3857 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 10, -10); 3858 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 19, -19); 3859 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 20, -20); 3860 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 21, -20); 3861 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 0, 0); 3862 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); 3863 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 9, -9); 3864 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 18, -18); 3865 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 19, -19); 3866 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 20, -19); 3867 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 0, 0); 3868 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 1, -1); 3869 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 5, -5); 3870 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); 3871 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); 3872 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); 3873 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 0, 0); 3874 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 1, -1); 3875 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 2, -1); 3876 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 20, 0, 0); 3877 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 20, 1, 0); 3878 test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); 3879 test(S("abcdefghij"), 11, 0, SV(""), 0, 0, 0); 3880 test(S("abcdefghij"), 11, 0, SV(""), 0, 1, 0); 3881 test(S("abcdefghij"), 11, 0, SV(""), 1, 0, 0); 3882 test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 0, 0); 3883 test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 1, 0); 3884 test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 2, 0); 3885 test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 4, 0); 3886 test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 5, 0); 3887 test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 6, 0); 3888 test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 0, 0); 3889 test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 1, 0); 3890 test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 2, 0); 3891 test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 3, 0); 3892 test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 4, 0); 3893 test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 5, 0); 3894 test(S("abcdefghij"), 11, 0, SV("abcde"), 2, 0, 0); 3895 test(S("abcdefghij"), 11, 0, SV("abcde"), 2, 1, 0); 3896 test(S("abcdefghij"), 11, 0, SV("abcde"), 2, 2, 0); 3897 test(S("abcdefghij"), 11, 0, SV("abcde"), 2, 3, 0); 3898 test(S("abcdefghij"), 11, 0, SV("abcde"), 2, 4, 0); 3899 test(S("abcdefghij"), 11, 0, SV("abcde"), 4, 0, 0); 3900 test(S("abcdefghij"), 11, 0, SV("abcde"), 4, 1, 0); 3901 test(S("abcdefghij"), 11, 0, SV("abcde"), 4, 2, 0); 3902 test(S("abcdefghij"), 11, 0, SV("abcde"), 5, 0, 0); 3903 test(S("abcdefghij"), 11, 0, SV("abcde"), 5, 1, 0); 3904 test(S("abcdefghij"), 11, 0, SV("abcde"), 6, 0, 0); 3905 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 0, 0); 3906 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 1, 0); 3907 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 5, 0); 3908 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 9, 0); 3909 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 10, 0); 3910 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 11, 0); 3911 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 0, 0); 3912 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 1, 0); 3913 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 4, 0); 3914 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 8, 0); 3915 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 9, 0); 3916 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 10, 0); 3917 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 0, 0); 3918 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 1, 0); 3919 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 2, 0); 3920 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 4, 0); 3921 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 5, 0); 3922 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 6, 0); 3923 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 9, 0, 0); 3924 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 9, 1, 0); 3925 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 9, 2, 0); 3926 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 10, 0, 0); 3927 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 10, 1, 0); 3928 test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 11, 0, 0); 3929 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); 3930 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 1, 0); 3931 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 10, 0); 3932 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 19, 0); 3933 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 20, 0); 3934 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 21, 0); 3935 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); 3936 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 1, 0); 3937 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 9, 0); 3938 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 18, 0); 3939 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 19, 0); 3940 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 20, 0); 3941 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); 3942 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 1, 0); 3943 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 5, 0); 3944 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 9, 0); 3945 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 10, 0); 3946 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 11, 0); 3947 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); 3948 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 19, 1, 0); 3949 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 19, 2, 0); 3950 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); 3951 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); 3952 test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); 3953} 3954 3955template <class S, class SV> 3956void test37() 3957{ 3958 test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), 0, 0, 0); 3959 test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), 0, 1, 0); 3960 test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), 1, 0, 0); 3961 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 0, 0); 3962 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 1, -1); 3963 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 2, -2); 3964 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 4, -4); 3965 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 5, -5); 3966 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 6, -5); 3967 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 0, 0); 3968 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 1, -1); 3969 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 2, -2); 3970 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 3, -3); 3971 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 4, -4); 3972 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 5, -4); 3973 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 2, 0, 0); 3974 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 2, 1, -1); 3975 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 2, 2, -2); 3976 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 2, 3, -3); 3977 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 2, 4, -3); 3978 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 4, 0, 0); 3979 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 4, 1, -1); 3980 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 4, 2, -1); 3981 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 5, 0, 0); 3982 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 5, 1, 0); 3983 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 6, 0, 0); 3984 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 0, 0); 3985 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 1, -1); 3986 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 5, -5); 3987 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 9, -9); 3988 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 10, -10); 3989 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 11, -10); 3990 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 0, 0); 3991 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 1, -1); 3992 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 4, -4); 3993 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 8, -8); 3994 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 9, -9); 3995 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 10, -9); 3996 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 0, 0); 3997 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 1, -1); 3998 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 2, -2); 3999 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 4, -4); 4000 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 5, -5); 4001 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 6, -5); 4002 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 9, 0, 0); 4003 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 9, 1, -1); 4004 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 9, 2, -1); 4005 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 10, 0, 0); 4006 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 10, 1, 0); 4007 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 11, 0, 0); 4008 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); 4009 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); 4010 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); 4011 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); 4012 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); 4013 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); 4014 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); 4015 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); 4016 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); 4017 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); 4018 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); 4019 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); 4020 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); 4021 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); 4022 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); 4023 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); 4024 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); 4025 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); 4026 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); 4027 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); 4028 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); 4029 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); 4030 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); 4031 test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); 4032 test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), 0, 0, 1); 4033 test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), 0, 1, 1); 4034 test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), 1, 0, 0); 4035 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 0, 1); 4036 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 1, 0); 4037 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 2, -1); 4038 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 4, -3); 4039 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 5, -4); 4040 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 6, -4); 4041 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 0, 1); 4042 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 1, -1); 4043 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 2, -1); 4044 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 3, -1); 4045 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 4, -1); 4046 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 5, -1); 4047 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 2, 0, 1); 4048 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 2, 1, -2); 4049 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 2, 2, -2); 4050 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 2, 3, -2); 4051 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 2, 4, -2); 4052 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 4, 0, 1); 4053 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 4, 1, -4); 4054 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 4, 2, -4); 4055 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 5, 0, 1); 4056 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 5, 1, 1); 4057 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 6, 0, 0); 4058} 4059 4060template <class S, class SV> 4061void test38() 4062{ 4063 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 0, 1); 4064 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 1, 0); 4065 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 5, -4); 4066 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 9, -8); 4067 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 10, -9); 4068 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 11, -9); 4069 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 0, 1); 4070 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 1, -1); 4071 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 4, -1); 4072 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 8, -1); 4073 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 9, -1); 4074 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 10, -1); 4075 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 0, 1); 4076 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 1, -5); 4077 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 2, -5); 4078 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 4, -5); 4079 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 5, -5); 4080 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 6, -5); 4081 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 9, 0, 1); 4082 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 9, 1, -9); 4083 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 9, 2, -9); 4084 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 10, 0, 1); 4085 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 10, 1, 1); 4086 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 11, 0, 0); 4087 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); 4088 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 1, 0); 4089 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 10, -9); 4090 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 19, -18); 4091 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 20, -19); 4092 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 21, -19); 4093 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); 4094 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); 4095 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 9, -1); 4096 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 18, -1); 4097 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 19, -1); 4098 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 20, -1); 4099 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); 4100 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 1, -10); 4101 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 5, -10); 4102 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 9, -10); 4103 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); 4104 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); 4105 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); 4106 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 1, -19); 4107 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 2, -19); 4108 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); 4109 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); 4110 test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); 4111 test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), 0, 0, 10); 4112 test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), 0, 1, 10); 4113 test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), 1, 0, 0); 4114 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 0, 10); 4115 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 1, 9); 4116 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 2, 8); 4117 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 4, 6); 4118 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 5, 5); 4119 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 6, 5); 4120 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 0, 10); 4121 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 1, -1); 4122 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 2, -1); 4123 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 3, -1); 4124 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 4, -1); 4125 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 5, -1); 4126 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 2, 0, 10); 4127 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 2, 1, -2); 4128 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 2, 2, -2); 4129 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 2, 3, -2); 4130 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 2, 4, -2); 4131 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 4, 0, 10); 4132 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 4, 1, -4); 4133 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 4, 2, -4); 4134 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 5, 0, 10); 4135 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 5, 1, 10); 4136 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 6, 0, 0); 4137 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 0, 10); 4138 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 1, 9); 4139 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 5, 5); 4140 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 9, 1); 4141 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 10, 0); 4142 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 11, 0); 4143 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 0, 10); 4144 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 1, -1); 4145 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 4, -1); 4146 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 8, -1); 4147 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 9, -1); 4148 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 10, -1); 4149 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 0, 10); 4150 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 1, -5); 4151 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 2, -5); 4152 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 4, -5); 4153 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 5, -5); 4154 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 6, -5); 4155 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 9, 0, 10); 4156 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 9, 1, -9); 4157 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 9, 2, -9); 4158 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 10, 0, 10); 4159 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 10, 1, 10); 4160 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 11, 0, 0); 4161 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 0, 10); 4162 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 1, 9); 4163} 4164 4165template <class S, class SV> 4166void test39() 4167{ 4168 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 10, 0); 4169 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 19, -9); 4170 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 20, -10); 4171 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 21, -10); 4172 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 0, 10); 4173 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 1, -1); 4174 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 9, -1); 4175 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 18, -1); 4176 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 19, -1); 4177 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 20, -1); 4178 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 0, 10); 4179 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 1, -10); 4180 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 5, -10); 4181 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 9, -10); 4182 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 10, -10); 4183 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 11, -10); 4184 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 0, 10); 4185 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 1, -19); 4186 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 2, -19); 4187 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 20, 0, 10); 4188 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 20, 1, 10); 4189 test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 21, 0, 0); 4190 test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), 0, 0, 19); 4191 test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), 0, 1, 19); 4192 test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), 1, 0, 0); 4193 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 0, 19); 4194 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 1, 18); 4195 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 2, 17); 4196 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 4, 15); 4197 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 5, 14); 4198 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 6, 14); 4199 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 0, 19); 4200 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 1, -1); 4201 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 2, -1); 4202 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 3, -1); 4203 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 4, -1); 4204 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 5, -1); 4205 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 2, 0, 19); 4206 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 2, 1, -2); 4207 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 2, 2, -2); 4208 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 2, 3, -2); 4209 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 2, 4, -2); 4210 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 4, 0, 19); 4211 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 4, 1, -4); 4212 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 4, 2, -4); 4213 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 5, 0, 19); 4214 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 5, 1, 19); 4215 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 6, 0, 0); 4216 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 0, 19); 4217 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 1, 18); 4218 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 5, 14); 4219 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 9, 10); 4220 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 10, 9); 4221 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 11, 9); 4222 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 0, 19); 4223 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 1, -1); 4224 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 4, -1); 4225 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 8, -1); 4226 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 9, -1); 4227 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 10, -1); 4228 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 0, 19); 4229 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 1, -5); 4230 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 2, -5); 4231 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 4, -5); 4232 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 5, -5); 4233 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 6, -5); 4234 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 9, 0, 19); 4235 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 9, 1, -9); 4236 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 9, 2, -9); 4237 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 10, 0, 19); 4238 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 10, 1, 19); 4239 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 11, 0, 0); 4240 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 0, 19); 4241 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 1, 18); 4242 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 10, 9); 4243 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 19, 0); 4244 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 20, -1); 4245 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 21, -1); 4246 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 0, 19); 4247 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 1, -1); 4248 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 9, -1); 4249 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 18, -1); 4250 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 19, -1); 4251 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 20, -1); 4252 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 0, 19); 4253 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 1, -10); 4254 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 5, -10); 4255 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 9, -10); 4256 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 10, -10); 4257 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 11, -10); 4258 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 19, 0, 19); 4259 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 19, 1, -19); 4260 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 19, 2, -19); 4261 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 20, 0, 19); 4262 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 20, 1, 19); 4263 test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 21, 0, 0); 4264 test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), 0, 0, 20); 4265 test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), 0, 1, 20); 4266 test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), 1, 0, 0); 4267 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 0, 20); 4268} 4269 4270template <class S, class SV> 4271void test40() 4272{ 4273 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 1, 19); 4274 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 2, 18); 4275 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 4, 16); 4276 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 5, 15); 4277 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 6, 15); 4278 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 0, 20); 4279 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 1, -1); 4280 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 2, -1); 4281 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 3, -1); 4282 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 4, -1); 4283 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 5, -1); 4284 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 2, 0, 20); 4285 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 2, 1, -2); 4286 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 2, 2, -2); 4287 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 2, 3, -2); 4288 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 2, 4, -2); 4289 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 4, 0, 20); 4290 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 4, 1, -4); 4291 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 4, 2, -4); 4292 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 5, 0, 20); 4293 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 5, 1, 20); 4294 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 6, 0, 0); 4295 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 0, 20); 4296 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 1, 19); 4297 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 5, 15); 4298 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 9, 11); 4299 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 10, 10); 4300 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 11, 10); 4301 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 0, 20); 4302 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 1, -1); 4303 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 4, -1); 4304 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 8, -1); 4305 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 9, -1); 4306 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 10, -1); 4307 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 0, 20); 4308 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 1, -5); 4309 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 2, -5); 4310 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 4, -5); 4311 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 5, -5); 4312 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 6, -5); 4313 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 9, 0, 20); 4314 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 9, 1, -9); 4315 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 9, 2, -9); 4316 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 10, 0, 20); 4317 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 10, 1, 20); 4318 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 11, 0, 0); 4319 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 0, 20); 4320 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 1, 19); 4321 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 10, 10); 4322 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 19, 1); 4323 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 20, 0); 4324 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 21, 0); 4325 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 0, 20); 4326 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 1, -1); 4327 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 9, -1); 4328 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 18, -1); 4329 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 19, -1); 4330 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 20, -1); 4331 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 0, 20); 4332 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 1, -10); 4333 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 5, -10); 4334 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 9, -10); 4335 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 10, -10); 4336 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 11, -10); 4337 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 19, 0, 20); 4338 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 19, 1, -19); 4339 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 19, 2, -19); 4340 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 20, 0, 20); 4341 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 20, 1, 20); 4342 test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 21, 0, 0); 4343 test(S("abcdefghijklmnopqrst"), 0, 21, SV(""), 0, 0, 20); 4344 test(S("abcdefghijklmnopqrst"), 0, 21, SV(""), 0, 1, 20); 4345 test(S("abcdefghijklmnopqrst"), 0, 21, SV(""), 1, 0, 0); 4346 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 0, 20); 4347 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 1, 19); 4348 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 2, 18); 4349 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 4, 16); 4350 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 5, 15); 4351 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 6, 15); 4352 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 0, 20); 4353 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 1, -1); 4354 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 2, -1); 4355 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 3, -1); 4356 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 4, -1); 4357 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 5, -1); 4358 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 2, 0, 20); 4359 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 2, 1, -2); 4360 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 2, 2, -2); 4361 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 2, 3, -2); 4362 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 2, 4, -2); 4363 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 4, 0, 20); 4364 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 4, 1, -4); 4365 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 4, 2, -4); 4366 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 5, 0, 20); 4367 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 5, 1, 20); 4368 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 6, 0, 0); 4369 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 0, 20); 4370 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 1, 19); 4371 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 5, 15); 4372 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 9, 11); 4373} 4374 4375template <class S, class SV> 4376void test41() 4377{ 4378 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 10, 10); 4379 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 11, 10); 4380 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 0, 20); 4381 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 1, -1); 4382 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 4, -1); 4383 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 8, -1); 4384 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 9, -1); 4385 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 10, -1); 4386 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 0, 20); 4387 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 1, -5); 4388 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 2, -5); 4389 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 4, -5); 4390 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 5, -5); 4391 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 6, -5); 4392 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 9, 0, 20); 4393 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 9, 1, -9); 4394 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 9, 2, -9); 4395 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 10, 0, 20); 4396 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 10, 1, 20); 4397 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 11, 0, 0); 4398 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 0, 20); 4399 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 1, 19); 4400 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 10, 10); 4401 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 19, 1); 4402 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 20, 0); 4403 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 21, 0); 4404 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 0, 20); 4405 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 1, -1); 4406 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 9, -1); 4407 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 18, -1); 4408 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 19, -1); 4409 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 20, -1); 4410 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 0, 20); 4411 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 1, -10); 4412 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 5, -10); 4413 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 9, -10); 4414 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 10, -10); 4415 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 11, -10); 4416 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 19, 0, 20); 4417 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 19, 1, -19); 4418 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 19, 2, -19); 4419 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 20, 0, 20); 4420 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 20, 1, 20); 4421 test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 21, 0, 0); 4422 test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), 0, 0, 0); 4423 test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), 0, 1, 0); 4424 test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), 1, 0, 0); 4425 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 0, 0); 4426 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 1, -1); 4427 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 2, -2); 4428 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 4, -4); 4429 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 5, -5); 4430 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 6, -5); 4431 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 0, 0); 4432 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 1, -1); 4433 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 2, -2); 4434 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 3, -3); 4435 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 4, -4); 4436 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 5, -4); 4437 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 2, 0, 0); 4438 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 2, 1, -1); 4439 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 2, 2, -2); 4440 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 2, 3, -3); 4441 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 2, 4, -3); 4442 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 4, 0, 0); 4443 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 4, 1, -1); 4444 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 4, 2, -1); 4445 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 5, 0, 0); 4446 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 5, 1, 0); 4447 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 6, 0, 0); 4448 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 0, 0); 4449 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 1, -1); 4450 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 5, -5); 4451 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 9, -9); 4452 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 10, -10); 4453 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 11, -10); 4454 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 0, 0); 4455 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 1, -1); 4456 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 4, -4); 4457 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 8, -8); 4458 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 9, -9); 4459 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 10, -9); 4460 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 0, 0); 4461 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 1, -1); 4462 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 2, -2); 4463 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 4, -4); 4464 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 5, -5); 4465 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 6, -5); 4466 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 9, 0, 0); 4467 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 9, 1, -1); 4468 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 9, 2, -1); 4469 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 10, 0, 0); 4470 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 10, 1, 0); 4471 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 11, 0, 0); 4472 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); 4473 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); 4474 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); 4475 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); 4476 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); 4477 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); 4478} 4479 4480template <class S, class SV> 4481void test42() 4482{ 4483 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); 4484 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); 4485 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); 4486 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); 4487 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); 4488 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); 4489 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); 4490 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); 4491 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); 4492 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); 4493 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); 4494 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); 4495 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); 4496 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); 4497 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); 4498 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); 4499 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); 4500 test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); 4501 test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), 0, 0, 1); 4502 test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), 0, 1, 1); 4503 test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), 1, 0, 0); 4504 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 0, 1); 4505 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 1, 1); 4506 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 2, 1); 4507 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 4, 1); 4508 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 5, 1); 4509 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 6, 1); 4510 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 0, 1); 4511 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 1, 0); 4512 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 2, -1); 4513 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 3, -2); 4514 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 4, -3); 4515 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 5, -3); 4516 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 2, 0, 1); 4517 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 2, 1, -1); 4518 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 2, 2, -1); 4519 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 2, 3, -1); 4520 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 2, 4, -1); 4521 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 4, 0, 1); 4522 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 4, 1, -3); 4523 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 4, 2, -3); 4524 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 5, 0, 1); 4525 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 5, 1, 1); 4526 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 6, 0, 0); 4527 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 0, 1); 4528 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 1, 1); 4529 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 5, 1); 4530 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 9, 1); 4531 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 10, 1); 4532 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 11, 1); 4533 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 0, 1); 4534 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 1, 0); 4535 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 4, -3); 4536 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 8, -7); 4537 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 9, -8); 4538 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 10, -8); 4539 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 0, 1); 4540 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 1, -4); 4541 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 2, -4); 4542 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 4, -4); 4543 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 5, -4); 4544 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 6, -4); 4545 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 9, 0, 1); 4546 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 9, 1, -8); 4547 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 9, 2, -8); 4548 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 10, 0, 1); 4549 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 10, 1, 1); 4550 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 11, 0, 0); 4551 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); 4552 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 1, 1); 4553 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 10, 1); 4554 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 19, 1); 4555 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 20, 1); 4556 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 21, 1); 4557 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); 4558 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 1, 0); 4559 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 9, -8); 4560 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 18, -17); 4561 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 19, -18); 4562 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 20, -18); 4563 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); 4564 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 1, -9); 4565 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 5, -9); 4566 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); 4567 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 10, -9); 4568 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 11, -9); 4569 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); 4570 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 1, -18); 4571 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 2, -18); 4572 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); 4573 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); 4574 test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); 4575 test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), 0, 0, 9); 4576 test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), 0, 1, 9); 4577 test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), 1, 0, 0); 4578 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 0, 9); 4579 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 1, 1); 4580 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 2, 1); 4581 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 4, 1); 4582 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 5, 1); 4583} 4584 4585template <class S, class SV> 4586void test43() 4587{ 4588 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 6, 1); 4589 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 0, 9); 4590 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 1, 8); 4591 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 2, 7); 4592 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 3, 6); 4593 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 4, 5); 4594 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 5, 5); 4595 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 2, 0, 9); 4596 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 2, 1, -1); 4597 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 2, 2, -1); 4598 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 2, 3, -1); 4599 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 2, 4, -1); 4600 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 4, 0, 9); 4601 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 4, 1, -3); 4602 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 4, 2, -3); 4603 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 5, 0, 9); 4604 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 5, 1, 9); 4605 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 6, 0, 0); 4606 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 0, 9); 4607 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 1, 1); 4608 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 5, 1); 4609 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 9, 1); 4610 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 10, 1); 4611 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 11, 1); 4612 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 0, 9); 4613 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 1, 8); 4614 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 4, 5); 4615 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 8, 1); 4616 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 9, 0); 4617 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 10, 0); 4618 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 0, 9); 4619 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 1, -4); 4620 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 2, -4); 4621 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 4, -4); 4622 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 5, -4); 4623 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 6, -4); 4624 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 9, 0, 9); 4625 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 9, 1, -8); 4626 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 9, 2, -8); 4627 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 10, 0, 9); 4628 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 10, 1, 9); 4629 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 11, 0, 0); 4630 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 0, 9); 4631 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 1, 1); 4632 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 10, 1); 4633 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 19, 1); 4634 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 20, 1); 4635 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 21, 1); 4636 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 0, 9); 4637 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 1, 8); 4638 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 9, 0); 4639 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 18, -9); 4640 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 19, -10); 4641 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 20, -10); 4642 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 0, 9); 4643 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 1, -9); 4644 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 5, -9); 4645 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 9, -9); 4646 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 10, -9); 4647 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 11, -9); 4648 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 0, 9); 4649 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 1, -18); 4650 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 2, -18); 4651 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 20, 0, 9); 4652 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 20, 1, 9); 4653 test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 21, 0, 0); 4654 test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), 0, 0, 18); 4655 test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), 0, 1, 18); 4656 test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), 1, 0, 0); 4657 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 0, 18); 4658 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 1, 1); 4659 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 2, 1); 4660 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 4, 1); 4661 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 5, 1); 4662 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 6, 1); 4663 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 0, 18); 4664 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 1, 17); 4665 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 2, 16); 4666 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 3, 15); 4667 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 4, 14); 4668 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 5, 14); 4669 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 2, 0, 18); 4670 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 2, 1, -1); 4671 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 2, 2, -1); 4672 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 2, 3, -1); 4673 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 2, 4, -1); 4674 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 4, 0, 18); 4675 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 4, 1, -3); 4676 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 4, 2, -3); 4677 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 5, 0, 18); 4678 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 5, 1, 18); 4679 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 6, 0, 0); 4680 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 0, 18); 4681 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 1, 1); 4682 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 5, 1); 4683 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 9, 1); 4684 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 10, 1); 4685 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 11, 1); 4686 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 0, 18); 4687 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 1, 17); 4688} 4689 4690template <class S, class SV> 4691void test44() 4692{ 4693 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 4, 14); 4694 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 8, 10); 4695 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 9, 9); 4696 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 10, 9); 4697 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 0, 18); 4698 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 1, -4); 4699 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 2, -4); 4700 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 4, -4); 4701 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 5, -4); 4702 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 6, -4); 4703 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 9, 0, 18); 4704 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 9, 1, -8); 4705 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 9, 2, -8); 4706 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 10, 0, 18); 4707 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 10, 1, 18); 4708 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 11, 0, 0); 4709 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 0, 18); 4710 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 1, 1); 4711 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 10, 1); 4712 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 19, 1); 4713 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 20, 1); 4714 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 21, 1); 4715 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 0, 18); 4716 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 1, 17); 4717 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 9, 9); 4718 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 18, 0); 4719 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 19, -1); 4720 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 20, -1); 4721 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 0, 18); 4722 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 1, -9); 4723 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 5, -9); 4724 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 9, -9); 4725 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 10, -9); 4726 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 11, -9); 4727 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 19, 0, 18); 4728 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 19, 1, -18); 4729 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 19, 2, -18); 4730 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 20, 0, 18); 4731 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 20, 1, 18); 4732 test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 21, 0, 0); 4733 test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), 0, 0, 19); 4734 test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), 0, 1, 19); 4735 test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), 1, 0, 0); 4736 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 0, 19); 4737 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 1, 1); 4738 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 2, 1); 4739 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 4, 1); 4740 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 5, 1); 4741 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 6, 1); 4742 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 0, 19); 4743 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 1, 18); 4744 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 2, 17); 4745 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 3, 16); 4746 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 4, 15); 4747 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 5, 15); 4748 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 2, 0, 19); 4749 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 2, 1, -1); 4750 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 2, 2, -1); 4751 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 2, 3, -1); 4752 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 2, 4, -1); 4753 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 4, 0, 19); 4754 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 4, 1, -3); 4755 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 4, 2, -3); 4756 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 5, 0, 19); 4757 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 5, 1, 19); 4758 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 6, 0, 0); 4759 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 0, 19); 4760 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 1, 1); 4761 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 5, 1); 4762 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 9, 1); 4763 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 10, 1); 4764 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 11, 1); 4765 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 0, 19); 4766 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 1, 18); 4767 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 4, 15); 4768 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 8, 11); 4769 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 9, 10); 4770 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 10, 10); 4771 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 0, 19); 4772 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 1, -4); 4773 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 2, -4); 4774 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 4, -4); 4775 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 5, -4); 4776 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 6, -4); 4777 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 9, 0, 19); 4778 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 9, 1, -8); 4779 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 9, 2, -8); 4780 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 10, 0, 19); 4781 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 10, 1, 19); 4782 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 11, 0, 0); 4783 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 0, 19); 4784 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 1, 1); 4785 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 10, 1); 4786 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 19, 1); 4787 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 20, 1); 4788 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 21, 1); 4789 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 0, 19); 4790 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 1, 18); 4791 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 9, 10); 4792 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 18, 1); 4793} 4794 4795template <class S, class SV> 4796void test45() 4797{ 4798 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 19, 0); 4799 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 20, 0); 4800 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 0, 19); 4801 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 1, -9); 4802 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 5, -9); 4803 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 9, -9); 4804 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 10, -9); 4805 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 11, -9); 4806 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 19, 0, 19); 4807 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 19, 1, -18); 4808 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 19, 2, -18); 4809 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 20, 0, 19); 4810 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 20, 1, 19); 4811 test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 21, 0, 0); 4812 test(S("abcdefghijklmnopqrst"), 1, 20, SV(""), 0, 0, 19); 4813 test(S("abcdefghijklmnopqrst"), 1, 20, SV(""), 0, 1, 19); 4814 test(S("abcdefghijklmnopqrst"), 1, 20, SV(""), 1, 0, 0); 4815 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 0, 19); 4816 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 1, 1); 4817 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 2, 1); 4818 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 4, 1); 4819 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 5, 1); 4820 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 6, 1); 4821 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 0, 19); 4822 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 1, 18); 4823 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 2, 17); 4824 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 3, 16); 4825 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 4, 15); 4826 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 5, 15); 4827 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 2, 0, 19); 4828 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 2, 1, -1); 4829 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 2, 2, -1); 4830 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 2, 3, -1); 4831 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 2, 4, -1); 4832 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 4, 0, 19); 4833 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 4, 1, -3); 4834 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 4, 2, -3); 4835 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 5, 0, 19); 4836 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 5, 1, 19); 4837 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 6, 0, 0); 4838 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 0, 19); 4839 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 1, 1); 4840 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 5, 1); 4841 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 9, 1); 4842 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 10, 1); 4843 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 11, 1); 4844 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 0, 19); 4845 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 1, 18); 4846 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 4, 15); 4847 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 8, 11); 4848 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 9, 10); 4849 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 10, 10); 4850 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 0, 19); 4851 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 1, -4); 4852 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 2, -4); 4853 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 4, -4); 4854 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 5, -4); 4855 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 6, -4); 4856 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 9, 0, 19); 4857 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 9, 1, -8); 4858 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 9, 2, -8); 4859 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 10, 0, 19); 4860 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 10, 1, 19); 4861 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 11, 0, 0); 4862 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 0, 19); 4863 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 1, 1); 4864 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 10, 1); 4865 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 19, 1); 4866 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 20, 1); 4867 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 21, 1); 4868 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 0, 19); 4869 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 1, 18); 4870 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 9, 10); 4871 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 18, 1); 4872 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 19, 0); 4873 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 20, 0); 4874 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 0, 19); 4875 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 1, -9); 4876 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 5, -9); 4877 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 9, -9); 4878 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 10, -9); 4879 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 11, -9); 4880 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 19, 0, 19); 4881 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 19, 1, -18); 4882 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 19, 2, -18); 4883 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 20, 0, 19); 4884 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 20, 1, 19); 4885 test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 21, 0, 0); 4886 test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), 0, 0, 0); 4887 test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), 0, 1, 0); 4888 test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), 1, 0, 0); 4889 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 0, 0); 4890 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 1, -1); 4891 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 2, -2); 4892 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 4, -4); 4893 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 5, -5); 4894 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 6, -5); 4895 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 0, 0); 4896 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 1, -1); 4897 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 2, -2); 4898} 4899 4900template <class S, class SV> 4901void test46() 4902{ 4903 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 3, -3); 4904 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 4, -4); 4905 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 5, -4); 4906 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 2, 0, 0); 4907 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 2, 1, -1); 4908 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 2, 2, -2); 4909 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 2, 3, -3); 4910 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 2, 4, -3); 4911 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 4, 0, 0); 4912 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 4, 1, -1); 4913 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 4, 2, -1); 4914 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 5, 0, 0); 4915 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 5, 1, 0); 4916 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 6, 0, 0); 4917 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 0, 0); 4918 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 1, -1); 4919 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 5, -5); 4920 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 9, -9); 4921 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 10, -10); 4922 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 11, -10); 4923 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 0, 0); 4924 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 1, -1); 4925 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 4, -4); 4926 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 8, -8); 4927 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 9, -9); 4928 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 10, -9); 4929 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 0, 0); 4930 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 1, -1); 4931 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 2, -2); 4932 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 4, -4); 4933 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 5, -5); 4934 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 6, -5); 4935 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 9, 0, 0); 4936 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 9, 1, -1); 4937 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 9, 2, -1); 4938 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 10, 0, 0); 4939 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 10, 1, 0); 4940 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 11, 0, 0); 4941 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); 4942 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); 4943 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); 4944 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); 4945 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); 4946 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); 4947 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); 4948 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); 4949 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); 4950 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); 4951 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); 4952 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); 4953 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); 4954 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); 4955 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); 4956 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); 4957 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); 4958 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); 4959 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); 4960 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); 4961 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); 4962 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); 4963 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); 4964 test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); 4965 test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), 0, 0, 1); 4966 test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), 0, 1, 1); 4967 test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), 1, 0, 0); 4968 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 0, 1); 4969 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 1, 10); 4970 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 2, 10); 4971 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 4, 10); 4972 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 5, 10); 4973 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 6, 10); 4974 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 0, 1); 4975 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 1, 9); 4976 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 2, 9); 4977 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 3, 9); 4978 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 4, 9); 4979 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 5, 9); 4980 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 2, 0, 1); 4981 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 2, 1, 8); 4982 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 2, 2, 8); 4983 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 2, 3, 8); 4984 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 2, 4, 8); 4985 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 4, 0, 1); 4986 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 4, 1, 6); 4987 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 4, 2, 6); 4988 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 5, 0, 1); 4989 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 5, 1, 1); 4990 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 6, 0, 0); 4991 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 0, 1); 4992 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 1, 10); 4993 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 5, 10); 4994 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 9, 10); 4995 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 10, 10); 4996 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 11, 10); 4997 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 0, 1); 4998 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 1, 9); 4999 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 4, 9); 5000 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 8, 9); 5001 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 9, 9); 5002 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 10, 9); 5003} 5004 5005template <class S, class SV> 5006void test47() 5007{ 5008 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 0, 1); 5009 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 1, 5); 5010 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 2, 5); 5011 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 4, 5); 5012 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 5, 5); 5013 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 6, 5); 5014 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 9, 0, 1); 5015 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 9, 1, 1); 5016 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 9, 2, 1); 5017 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 10, 0, 1); 5018 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 10, 1, 1); 5019 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 11, 0, 0); 5020 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); 5021 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 1, 10); 5022 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 10, 10); 5023 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 19, 10); 5024 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 20, 10); 5025 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 21, 10); 5026 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); 5027 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 1, 9); 5028 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 9, 9); 5029 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 18, 9); 5030 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 19, 9); 5031 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 20, 9); 5032 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); 5033 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 1, 0); 5034 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 5, -4); 5035 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 9, -8); 5036 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 10, -9); 5037 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 11, -9); 5038 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); 5039 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 1, -9); 5040 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 2, -9); 5041 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); 5042 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); 5043 test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); 5044 test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), 0, 0, 5); 5045 test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), 0, 1, 5); 5046 test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), 1, 0, 0); 5047 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 0, 5); 5048 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 1, 10); 5049 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 2, 10); 5050 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 4, 10); 5051 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 5, 10); 5052 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 6, 10); 5053 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 0, 5); 5054 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 1, 9); 5055 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 2, 9); 5056 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 3, 9); 5057 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 4, 9); 5058 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 5, 9); 5059 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 2, 0, 5); 5060 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 2, 1, 8); 5061 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 2, 2, 8); 5062 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 2, 3, 8); 5063 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 2, 4, 8); 5064 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 4, 0, 5); 5065 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 4, 1, 6); 5066 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 4, 2, 6); 5067 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 5, 0, 5); 5068 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 5, 1, 5); 5069 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 6, 0, 0); 5070 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 0, 5); 5071 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 1, 10); 5072 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 5, 10); 5073 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 9, 10); 5074 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 10, 10); 5075 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 11, 10); 5076 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 0, 5); 5077 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 1, 9); 5078 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 4, 9); 5079 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 8, 9); 5080 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 9, 9); 5081 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 10, 9); 5082 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 0, 5); 5083 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 1, 5); 5084 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 2, 5); 5085 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 4, 5); 5086 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 5, 5); 5087 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 6, 5); 5088 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 9, 0, 5); 5089 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 9, 1, 1); 5090 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 9, 2, 1); 5091 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 10, 0, 5); 5092 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 10, 1, 5); 5093 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 11, 0, 0); 5094 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 0, 5); 5095 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 1, 10); 5096 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 10, 10); 5097 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 19, 10); 5098 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 20, 10); 5099 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 21, 10); 5100 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 0, 5); 5101 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 1, 9); 5102 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 9, 9); 5103 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 18, 9); 5104 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 19, 9); 5105 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 20, 9); 5106 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 0, 5); 5107 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 1, 4); 5108} 5109 5110template <class S, class SV> 5111void test48() 5112{ 5113 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 5, 0); 5114 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 9, -4); 5115 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 10, -5); 5116 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 11, -5); 5117 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 19, 0, 5); 5118 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 19, 1, -9); 5119 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 19, 2, -9); 5120 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 20, 0, 5); 5121 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 20, 1, 5); 5122 test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 21, 0, 0); 5123 test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), 0, 0, 9); 5124 test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), 0, 1, 9); 5125 test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), 1, 0, 0); 5126 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 0, 9); 5127 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 1, 10); 5128 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 2, 10); 5129 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 4, 10); 5130 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 5, 10); 5131 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 6, 10); 5132 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 0, 9); 5133 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 1, 9); 5134 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 2, 9); 5135 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 3, 9); 5136 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 4, 9); 5137 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 5, 9); 5138 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 2, 0, 9); 5139 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 2, 1, 8); 5140 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 2, 2, 8); 5141 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 2, 3, 8); 5142 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 2, 4, 8); 5143 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 4, 0, 9); 5144 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 4, 1, 6); 5145 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 4, 2, 6); 5146 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 5, 0, 9); 5147 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 5, 1, 9); 5148 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 6, 0, 0); 5149 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 0, 9); 5150 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 1, 10); 5151 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 5, 10); 5152 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 9, 10); 5153 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 10, 10); 5154 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 11, 10); 5155 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 0, 9); 5156 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 1, 9); 5157 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 4, 9); 5158 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 8, 9); 5159 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 9, 9); 5160 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 10, 9); 5161 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 0, 9); 5162 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 1, 5); 5163 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 2, 5); 5164 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 4, 5); 5165 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 5, 5); 5166 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 6, 5); 5167 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 9, 0, 9); 5168 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 9, 1, 1); 5169 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 9, 2, 1); 5170 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 10, 0, 9); 5171 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 10, 1, 9); 5172 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 11, 0, 0); 5173 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 0, 9); 5174 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 1, 10); 5175 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 10, 10); 5176 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 19, 10); 5177 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 20, 10); 5178 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 21, 10); 5179 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 0, 9); 5180 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 1, 9); 5181 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 9, 9); 5182 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 18, 9); 5183 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 19, 9); 5184 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 20, 9); 5185 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 0, 9); 5186 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 1, 8); 5187 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 5, 4); 5188 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 9, 0); 5189 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 10, -1); 5190 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 11, -1); 5191 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 19, 0, 9); 5192 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 19, 1, -9); 5193 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 19, 2, -9); 5194 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 20, 0, 9); 5195 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 20, 1, 9); 5196 test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 21, 0, 0); 5197 test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), 0, 0, 10); 5198 test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), 0, 1, 10); 5199 test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), 1, 0, 0); 5200 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 0, 10); 5201 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 1, 10); 5202 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 2, 10); 5203 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 4, 10); 5204 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 5, 10); 5205 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 6, 10); 5206 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 0, 10); 5207 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 1, 9); 5208 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 2, 9); 5209 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 3, 9); 5210 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 4, 9); 5211 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 5, 9); 5212 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 2, 0, 10); 5213} 5214 5215template <class S, class SV> 5216void test49() 5217{ 5218 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 2, 1, 8); 5219 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 2, 2, 8); 5220 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 2, 3, 8); 5221 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 2, 4, 8); 5222 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 4, 0, 10); 5223 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 4, 1, 6); 5224 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 4, 2, 6); 5225 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 5, 0, 10); 5226 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 5, 1, 10); 5227 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 6, 0, 0); 5228 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 0, 10); 5229 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 1, 10); 5230 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 5, 10); 5231 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 9, 10); 5232 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 10, 10); 5233 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 11, 10); 5234 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 0, 10); 5235 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 1, 9); 5236 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 4, 9); 5237 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 8, 9); 5238 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 9, 9); 5239 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 10, 9); 5240 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 0, 10); 5241 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 1, 5); 5242 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 2, 5); 5243 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 4, 5); 5244 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 5, 5); 5245 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 6, 5); 5246 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 9, 0, 10); 5247 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 9, 1, 1); 5248 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 9, 2, 1); 5249 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 10, 0, 10); 5250 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 10, 1, 10); 5251 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 11, 0, 0); 5252 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 0, 10); 5253 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 1, 10); 5254 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 10, 10); 5255 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 19, 10); 5256 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 20, 10); 5257 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 21, 10); 5258 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 0, 10); 5259 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 1, 9); 5260 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 9, 9); 5261 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 18, 9); 5262 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 19, 9); 5263 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 20, 9); 5264 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 0, 10); 5265 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 1, 9); 5266 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 5, 5); 5267 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 9, 1); 5268 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 10, 0); 5269 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 11, 0); 5270 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 19, 0, 10); 5271 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 19, 1, -9); 5272 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 19, 2, -9); 5273 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 20, 0, 10); 5274 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 20, 1, 10); 5275 test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 21, 0, 0); 5276 test(S("abcdefghijklmnopqrst"), 10, 11, SV(""), 0, 0, 10); 5277 test(S("abcdefghijklmnopqrst"), 10, 11, SV(""), 0, 1, 10); 5278 test(S("abcdefghijklmnopqrst"), 10, 11, SV(""), 1, 0, 0); 5279 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 0, 10); 5280 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 1, 10); 5281 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 2, 10); 5282 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 4, 10); 5283 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 5, 10); 5284 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 6, 10); 5285 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 0, 10); 5286 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 1, 9); 5287 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 2, 9); 5288 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 3, 9); 5289 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 4, 9); 5290 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 5, 9); 5291 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 2, 0, 10); 5292 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 2, 1, 8); 5293 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 2, 2, 8); 5294 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 2, 3, 8); 5295 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 2, 4, 8); 5296 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 4, 0, 10); 5297 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 4, 1, 6); 5298 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 4, 2, 6); 5299 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 5, 0, 10); 5300 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 5, 1, 10); 5301 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 6, 0, 0); 5302 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 0, 10); 5303 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 1, 10); 5304 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 5, 10); 5305 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 9, 10); 5306 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 10, 10); 5307 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 11, 10); 5308 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 0, 10); 5309 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 1, 9); 5310 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 4, 9); 5311 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 8, 9); 5312 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 9, 9); 5313 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 10, 9); 5314 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 0, 10); 5315 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 1, 5); 5316 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 2, 5); 5317 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 4, 5); 5318} 5319 5320template <class S, class SV> 5321void test50() 5322{ 5323 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 5, 5); 5324 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 6, 5); 5325 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 9, 0, 10); 5326 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 9, 1, 1); 5327 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 9, 2, 1); 5328 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 10, 0, 10); 5329 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 10, 1, 10); 5330 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 11, 0, 0); 5331 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 0, 10); 5332 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 1, 10); 5333 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 10, 10); 5334 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 19, 10); 5335 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 20, 10); 5336 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 21, 10); 5337 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 0, 10); 5338 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 1, 9); 5339 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 9, 9); 5340 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 18, 9); 5341 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 19, 9); 5342 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 20, 9); 5343 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 0, 10); 5344 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 1, 9); 5345 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 5, 5); 5346 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 9, 1); 5347 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 10, 0); 5348 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 11, 0); 5349 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 19, 0, 10); 5350 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 19, 1, -9); 5351 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 19, 2, -9); 5352 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 20, 0, 10); 5353 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 20, 1, 10); 5354 test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 21, 0, 0); 5355 test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), 0, 0, 0); 5356 test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), 0, 1, 0); 5357 test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), 1, 0, 0); 5358 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 0, 0); 5359 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 1, -1); 5360 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 2, -2); 5361 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 4, -4); 5362 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 5, -5); 5363 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 6, -5); 5364 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 0, 0); 5365 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 1, -1); 5366 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 2, -2); 5367 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 3, -3); 5368 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 4, -4); 5369 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 5, -4); 5370 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 2, 0, 0); 5371 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 2, 1, -1); 5372 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 2, 2, -2); 5373 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 2, 3, -3); 5374 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 2, 4, -3); 5375 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 4, 0, 0); 5376 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 4, 1, -1); 5377 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 4, 2, -1); 5378 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 5, 0, 0); 5379 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 5, 1, 0); 5380 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 6, 0, 0); 5381 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 0, 0); 5382 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 1, -1); 5383 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 5, -5); 5384 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 9, -9); 5385 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 10, -10); 5386 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 11, -10); 5387 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 0, 0); 5388 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 1, -1); 5389 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 4, -4); 5390 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 8, -8); 5391 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 9, -9); 5392 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 10, -9); 5393 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 0, 0); 5394 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 1, -1); 5395 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 2, -2); 5396 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 4, -4); 5397 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 5, -5); 5398 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 6, -5); 5399 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 9, 0, 0); 5400 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 9, 1, -1); 5401 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 9, 2, -1); 5402 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 10, 0, 0); 5403 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 10, 1, 0); 5404 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 11, 0, 0); 5405 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); 5406 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); 5407 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); 5408 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); 5409 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); 5410 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); 5411 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); 5412 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); 5413 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); 5414 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); 5415 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); 5416 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); 5417 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); 5418 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); 5419 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); 5420 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); 5421 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); 5422 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); 5423} 5424 5425template <class S, class SV> 5426void test51() 5427{ 5428 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); 5429 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); 5430 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); 5431 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); 5432 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); 5433 test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); 5434 test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), 0, 0, 1); 5435 test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), 0, 1, 1); 5436 test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), 1, 0, 0); 5437 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 0, 1); 5438 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 1, 19); 5439 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 2, 19); 5440 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 4, 19); 5441 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 5, 19); 5442 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 6, 19); 5443 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 0, 1); 5444 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 1, 18); 5445 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 2, 18); 5446 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 3, 18); 5447 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 4, 18); 5448 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 5, 18); 5449 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 2, 0, 1); 5450 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 2, 1, 17); 5451 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 2, 2, 17); 5452 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 2, 3, 17); 5453 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 2, 4, 17); 5454 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 4, 0, 1); 5455 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 4, 1, 15); 5456 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 4, 2, 15); 5457 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 5, 0, 1); 5458 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 5, 1, 1); 5459 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 6, 0, 0); 5460 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 0, 1); 5461 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 1, 19); 5462 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 5, 19); 5463 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 9, 19); 5464 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 10, 19); 5465 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 11, 19); 5466 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 0, 1); 5467 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 1, 18); 5468 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 4, 18); 5469 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 8, 18); 5470 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 9, 18); 5471 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 10, 18); 5472 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 0, 1); 5473 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 1, 14); 5474 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 2, 14); 5475 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 4, 14); 5476 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 5, 14); 5477 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 6, 14); 5478 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 9, 0, 1); 5479 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 9, 1, 10); 5480 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 9, 2, 10); 5481 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 10, 0, 1); 5482 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 10, 1, 1); 5483 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 11, 0, 0); 5484 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); 5485 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 1, 19); 5486 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 10, 19); 5487 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 19, 19); 5488 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 20, 19); 5489 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 21, 19); 5490 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); 5491 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 1, 18); 5492 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 9, 18); 5493 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 18, 18); 5494 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 19, 18); 5495 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 20, 18); 5496 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); 5497 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 1, 9); 5498 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 5, 9); 5499 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 9, 9); 5500 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 10, 9); 5501 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 11, 9); 5502 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); 5503 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 19, 1, 0); 5504 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 19, 2, 0); 5505 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); 5506 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); 5507 test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); 5508 test(S("abcdefghijklmnopqrst"), 19, 2, SV(""), 0, 0, 1); 5509 test(S("abcdefghijklmnopqrst"), 19, 2, SV(""), 0, 1, 1); 5510 test(S("abcdefghijklmnopqrst"), 19, 2, SV(""), 1, 0, 0); 5511 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 0, 1); 5512 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 1, 19); 5513 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 2, 19); 5514 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 4, 19); 5515 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 5, 19); 5516 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 6, 19); 5517 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 0, 1); 5518 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 1, 18); 5519 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 2, 18); 5520 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 3, 18); 5521 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 4, 18); 5522 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 5, 18); 5523 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 2, 0, 1); 5524 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 2, 1, 17); 5525 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 2, 2, 17); 5526 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 2, 3, 17); 5527 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 2, 4, 17); 5528} 5529 5530template <class S, class SV> 5531void test52() 5532{ 5533 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 4, 0, 1); 5534 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 4, 1, 15); 5535 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 4, 2, 15); 5536 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 5, 0, 1); 5537 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 5, 1, 1); 5538 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 6, 0, 0); 5539 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 0, 1); 5540 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 1, 19); 5541 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 5, 19); 5542 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 9, 19); 5543 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 10, 19); 5544 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 11, 19); 5545 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 0, 1); 5546 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 1, 18); 5547 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 4, 18); 5548 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 8, 18); 5549 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 9, 18); 5550 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 10, 18); 5551 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 0, 1); 5552 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 1, 14); 5553 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 2, 14); 5554 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 4, 14); 5555 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 5, 14); 5556 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 6, 14); 5557 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 9, 0, 1); 5558 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 9, 1, 10); 5559 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 9, 2, 10); 5560 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 10, 0, 1); 5561 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 10, 1, 1); 5562 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 11, 0, 0); 5563 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 0, 1); 5564 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 1, 19); 5565 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 10, 19); 5566 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 19, 19); 5567 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 20, 19); 5568 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 21, 19); 5569 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 0, 1); 5570 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 1, 18); 5571 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 9, 18); 5572 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 18, 18); 5573 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 19, 18); 5574 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 20, 18); 5575 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 0, 1); 5576 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 1, 9); 5577 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 5, 9); 5578 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 9, 9); 5579 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 10, 9); 5580 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 11, 9); 5581 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 19, 0, 1); 5582 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 19, 1, 0); 5583 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 19, 2, 0); 5584 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 20, 0, 1); 5585 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 20, 1, 1); 5586 test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); 5587 test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), 0, 0, 0); 5588 test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), 0, 1, 0); 5589 test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), 1, 0, 0); 5590 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 0, 0); 5591 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 1, -1); 5592 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 2, -2); 5593 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 4, -4); 5594 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 5, -5); 5595 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 6, -5); 5596 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 0, 0); 5597 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 1, -1); 5598 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 2, -2); 5599 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 3, -3); 5600 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 4, -4); 5601 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 5, -4); 5602 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 2, 0, 0); 5603 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 2, 1, -1); 5604 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 2, 2, -2); 5605 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 2, 3, -3); 5606 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 2, 4, -3); 5607 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 4, 0, 0); 5608 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 4, 1, -1); 5609 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 4, 2, -1); 5610 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 5, 0, 0); 5611 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 5, 1, 0); 5612 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 6, 0, 0); 5613 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 0, 0); 5614 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 1, -1); 5615 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 5, -5); 5616 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 9, -9); 5617 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 10, -10); 5618 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 11, -10); 5619 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 0, 0); 5620 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 1, -1); 5621 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 4, -4); 5622 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 8, -8); 5623 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 9, -9); 5624 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 10, -9); 5625 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 0, 0); 5626 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 1, -1); 5627 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 2, -2); 5628 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 4, -4); 5629 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 5, -5); 5630 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 6, -5); 5631 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 9, 0, 0); 5632 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 9, 1, -1); 5633} 5634 5635template <class S, class SV> 5636void test53() 5637{ 5638 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 9, 2, -1); 5639 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 10, 0, 0); 5640 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 10, 1, 0); 5641 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 11, 0, 0); 5642 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); 5643 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); 5644 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); 5645 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); 5646 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); 5647 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); 5648 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); 5649 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); 5650 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); 5651 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); 5652 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); 5653 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); 5654 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); 5655 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); 5656 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); 5657 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); 5658 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); 5659 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); 5660 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); 5661 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); 5662 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); 5663 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); 5664 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); 5665 test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); 5666 test(S("abcdefghijklmnopqrst"), 20, 1, SV(""), 0, 0, 0); 5667 test(S("abcdefghijklmnopqrst"), 20, 1, SV(""), 0, 1, 0); 5668 test(S("abcdefghijklmnopqrst"), 20, 1, SV(""), 1, 0, 0); 5669 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 0, 0); 5670 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 1, -1); 5671 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 2, -2); 5672 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 4, -4); 5673 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 5, -5); 5674 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 6, -5); 5675 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 0, 0); 5676 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 1, -1); 5677 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 2, -2); 5678 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 3, -3); 5679 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 4, -4); 5680 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 5, -4); 5681 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 2, 0, 0); 5682 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 2, 1, -1); 5683 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 2, 2, -2); 5684 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 2, 3, -3); 5685 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 2, 4, -3); 5686 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 4, 0, 0); 5687 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 4, 1, -1); 5688 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 4, 2, -1); 5689 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 5, 0, 0); 5690 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 5, 1, 0); 5691 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 6, 0, 0); 5692 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 0, 0); 5693 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 1, -1); 5694 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 5, -5); 5695 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 9, -9); 5696 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 10, -10); 5697 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 11, -10); 5698 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 0, 0); 5699 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 1, -1); 5700 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 4, -4); 5701 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 8, -8); 5702 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 9, -9); 5703 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 10, -9); 5704 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 0, 0); 5705 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 1, -1); 5706 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 2, -2); 5707 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 4, -4); 5708 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 5, -5); 5709 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 6, -5); 5710 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 9, 0, 0); 5711 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 9, 1, -1); 5712 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 9, 2, -1); 5713 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 10, 0, 0); 5714 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 10, 1, 0); 5715 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 11, 0, 0); 5716 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 0, 0); 5717 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 1, -1); 5718 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 10, -10); 5719 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 19, -19); 5720 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 20, -20); 5721 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 21, -20); 5722 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 0, 0); 5723 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); 5724 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 9, -9); 5725 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 18, -18); 5726 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 19, -19); 5727 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 20, -19); 5728 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 0, 0); 5729 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 1, -1); 5730 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 5, -5); 5731 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); 5732 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); 5733 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); 5734 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 19, 0, 0); 5735 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 19, 1, -1); 5736 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 19, 2, -1); 5737 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 20, 0, 0); 5738} 5739 5740template <class S, class SV> 5741void test54() 5742{ 5743 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 20, 1, 0); 5744 test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); 5745 test(S("abcdefghijklmnopqrst"), 21, 0, SV(""), 0, 0, 0); 5746 test(S("abcdefghijklmnopqrst"), 21, 0, SV(""), 0, 1, 0); 5747 test(S("abcdefghijklmnopqrst"), 21, 0, SV(""), 1, 0, 0); 5748 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 0, 0); 5749 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 1, 0); 5750 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 2, 0); 5751 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 4, 0); 5752 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 5, 0); 5753 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 6, 0); 5754 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 0, 0); 5755 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 1, 0); 5756 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 2, 0); 5757 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 3, 0); 5758 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 4, 0); 5759 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 5, 0); 5760 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 2, 0, 0); 5761 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 2, 1, 0); 5762 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 2, 2, 0); 5763 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 2, 3, 0); 5764 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 2, 4, 0); 5765 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 4, 0, 0); 5766 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 4, 1, 0); 5767 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 4, 2, 0); 5768 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 5, 0, 0); 5769 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 5, 1, 0); 5770 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 6, 0, 0); 5771 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 0, 0); 5772 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 1, 0); 5773 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 5, 0); 5774 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 9, 0); 5775 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 10, 0); 5776 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 11, 0); 5777 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 0, 0); 5778 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 1, 0); 5779 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 4, 0); 5780 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 8, 0); 5781 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 9, 0); 5782 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 10, 0); 5783 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 0, 0); 5784 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 1, 0); 5785 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 2, 0); 5786 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 4, 0); 5787 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 5, 0); 5788 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 6, 0); 5789 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 9, 0, 0); 5790 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 9, 1, 0); 5791 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 9, 2, 0); 5792 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 10, 0, 0); 5793 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 10, 1, 0); 5794 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 11, 0, 0); 5795 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); 5796 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 1, 0); 5797 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 10, 0); 5798 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 19, 0); 5799 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 20, 0); 5800 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 21, 0); 5801 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); 5802 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 1, 0); 5803 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 9, 0); 5804 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 18, 0); 5805 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 19, 0); 5806 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 20, 0); 5807 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); 5808 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 1, 0); 5809 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 5, 0); 5810 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 9, 0); 5811 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 10, 0); 5812 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 11, 0); 5813 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); 5814 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 19, 1, 0); 5815 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 19, 2, 0); 5816 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); 5817 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); 5818 test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); 5819} 5820 5821template <class S, class SV> 5822void test55() 5823{ 5824 test_npos(S(""), 0, 0, SV(""), 0, 0); 5825 test_npos(S(""), 0, 0, SV("abcde"), 0, -5); 5826 test_npos(S("abcde"), 0, 0, SV("abcdefghij"), 0, -10); 5827 test_npos(S("abcde"), 0, 0, SV("abcdefghij"), 1, -9); 5828 test_npos(S("abcde"), 0, 0, SV("abcdefghij"), 5, -5); 5829} 5830 5831int main() 5832{ 5833 { 5834 typedef std::string S; 5835 typedef std::string_view SV; 5836 test0<S, SV>(); 5837 test1<S, SV>(); 5838 test2<S, SV>(); 5839 test3<S, SV>(); 5840 test4<S, SV>(); 5841 test5<S, SV>(); 5842 test6<S, SV>(); 5843 test7<S, SV>(); 5844 test8<S, SV>(); 5845 test9<S, SV>(); 5846 test10<S, SV>(); 5847 test11<S, SV>(); 5848 test12<S, SV>(); 5849 test13<S, SV>(); 5850 test14<S, SV>(); 5851 test15<S, SV>(); 5852 test16<S, SV>(); 5853 test17<S, SV>(); 5854 test18<S, SV>(); 5855 test19<S, SV>(); 5856 test20<S, SV>(); 5857 test21<S, SV>(); 5858 test22<S, SV>(); 5859 test23<S, SV>(); 5860 test24<S, SV>(); 5861 test25<S, SV>(); 5862 test26<S, SV>(); 5863 test27<S, SV>(); 5864 test28<S, SV>(); 5865 test29<S, SV>(); 5866 test30<S, SV>(); 5867 test31<S, SV>(); 5868 test32<S, SV>(); 5869 test33<S, SV>(); 5870 test34<S, SV>(); 5871 test35<S, SV>(); 5872 test36<S, SV>(); 5873 test37<S, SV>(); 5874 test38<S, SV>(); 5875 test39<S, SV>(); 5876 test40<S, SV>(); 5877 test41<S, SV>(); 5878 test42<S, SV>(); 5879 test43<S, SV>(); 5880 test44<S, SV>(); 5881 test45<S, SV>(); 5882 test46<S, SV>(); 5883 test47<S, SV>(); 5884 test48<S, SV>(); 5885 test49<S, SV>(); 5886 test50<S, SV>(); 5887 test51<S, SV>(); 5888 test52<S, SV>(); 5889 test53<S, SV>(); 5890 test54<S, SV>(); 5891 test55<S, SV>(); 5892 } 5893#if TEST_STD_VER >= 11 5894 { 5895 typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S; 5896 typedef std::basic_string_view<char, std::char_traits<char>> SV; 5897 test0<S, SV>(); 5898 test1<S, SV>(); 5899 test2<S, SV>(); 5900 test3<S, SV>(); 5901 test4<S, SV>(); 5902 test5<S, SV>(); 5903 test6<S, SV>(); 5904 test7<S, SV>(); 5905 test8<S, SV>(); 5906 test9<S, SV>(); 5907 test10<S, SV>(); 5908 test11<S, SV>(); 5909 test12<S, SV>(); 5910 test13<S, SV>(); 5911 test14<S, SV>(); 5912 test15<S, SV>(); 5913 test16<S, SV>(); 5914 test17<S, SV>(); 5915 test18<S, SV>(); 5916 test19<S, SV>(); 5917 test20<S, SV>(); 5918 test21<S, SV>(); 5919 test22<S, SV>(); 5920 test23<S, SV>(); 5921 test24<S, SV>(); 5922 test25<S, SV>(); 5923 test26<S, SV>(); 5924 test27<S, SV>(); 5925 test28<S, SV>(); 5926 test29<S, SV>(); 5927 test30<S, SV>(); 5928 test31<S, SV>(); 5929 test32<S, SV>(); 5930 test33<S, SV>(); 5931 test34<S, SV>(); 5932 test35<S, SV>(); 5933 test36<S, SV>(); 5934 test37<S, SV>(); 5935 test38<S, SV>(); 5936 test39<S, SV>(); 5937 test40<S, SV>(); 5938 test41<S, SV>(); 5939 test42<S, SV>(); 5940 test43<S, SV>(); 5941 test44<S, SV>(); 5942 test45<S, SV>(); 5943 test46<S, SV>(); 5944 test47<S, SV>(); 5945 test48<S, SV>(); 5946 test49<S, SV>(); 5947 test50<S, SV>(); 5948 test51<S, SV>(); 5949 test52<S, SV>(); 5950 test53<S, SV>(); 5951 test54<S, SV>(); 5952 test55<S, SV>(); 5953 } 5954#endif 5955 { 5956 typedef std::string S; 5957 typedef std::string_view SV; 5958 S s = "MNOP"; 5959 SV sv = "CDEF"; 5960 char arr[] = "MNOP"; 5961 5962// calls compare(pos, n1, const char *, 0) 5963 assert(s.compare(0, 4, "QRST", 0) > 0); 5964 5965// calls compare(pos, n1, string("QRST"), 0, npos) 5966 assert(s.compare(0, 4, "QRST", 0, std::string::npos) < 0); 5967 5968// calls compare(pos, n1, T, 0, npos) 5969 assert(s.compare(0, 4, sv, 0) > 0); 5970 5971// calls compare(pos, n1, T, 0, npos) 5972 assert(s.compare(0, 4, sv, 0, std::string::npos) > 0); 5973 5974// calls compare(pos, n1, const char *, 0) 5975 assert(s.compare(0, 4, arr, 0) > 0); 5976 5977// calls compare(size, size, string(arr), 0, npos) 5978 assert(s.compare(0, 4, arr, 0, std::string::npos) == 0); 5979 } 5980} 5981