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