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> 11 12 // template <class T> 13 // basic_string& assign(size_type pos1, const T& t, size_type pos2, size_type n=npos); // C++17 14 // 15 // Mostly we're testing string_view here 16 17 #include <string> 18 #include <stdexcept> 19 #include <cassert> 20 21 #include "test_macros.h" 22 #include "min_allocator.h" 23 24 template <class S, class SV> 25 void 26 test(S s, typename S::size_type pos1, SV sv, typename S::size_type pos2, 27 typename S::size_type n, S expected) 28 { 29 static_assert((!std::is_same<S, SV>::value), ""); 30 const typename S::size_type old_size = s.size(); 31 S s0 = s; 32 if (pos1 <= old_size && pos2 <= sv.size()) 33 { 34 s.insert(pos1, sv, pos2, n); 35 LIBCPP_ASSERT(s.__invariants()); 36 assert(s == expected); 37 } 38 #ifndef TEST_HAS_NO_EXCEPTIONS 39 else 40 { 41 try 42 { 43 s.insert(pos1, sv, pos2, n); 44 assert(false); 45 } 46 catch (std::out_of_range&) 47 { 48 assert(pos1 > old_size || pos2 > sv.size()); 49 assert(s == s0); 50 } 51 } 52 #endif 53 } 54 55 template <class S, class SV> 56 void 57 test_npos(S s, typename S::size_type pos1, SV sv, typename S::size_type pos2, S expected) 58 { 59 static_assert((!std::is_same<S, SV>::value), ""); 60 const typename S::size_type old_size = s.size(); 61 S s0 = s; 62 if (pos1 <= old_size && pos2 <= sv.size()) 63 { 64 s.insert(pos1, sv, pos2); 65 LIBCPP_ASSERT(s.__invariants()); 66 assert(s == expected); 67 } 68 #ifndef TEST_HAS_NO_EXCEPTIONS 69 else 70 { 71 try 72 { 73 s.insert(pos1, sv, pos2); 74 assert(false); 75 } 76 catch (std::out_of_range&) 77 { 78 assert(pos1 > old_size || pos2 > sv.size()); 79 assert(s == s0); 80 } 81 } 82 #endif 83 } 84 85 86 template <class S, class SV> 87 void test0() 88 { 89 test(S(""), 0, SV(""), 0, 0, S("")); 90 test(S(""), 0, SV(""), 0, 1, S("")); 91 test(S(""), 0, SV(""), 1, 0, S("can't happen")); 92 test(S(""), 0, SV("12345"), 0, 0, S("")); 93 test(S(""), 0, SV("12345"), 0, 1, S("1")); 94 test(S(""), 0, SV("12345"), 0, 2, S("12")); 95 test(S(""), 0, SV("12345"), 0, 4, S("1234")); 96 test(S(""), 0, SV("12345"), 0, 5, S("12345")); 97 test(S(""), 0, SV("12345"), 0, 6, S("12345")); 98 test(S(""), 0, SV("12345"), 1, 0, S("")); 99 test(S(""), 0, SV("12345"), 1, 1, S("2")); 100 test(S(""), 0, SV("12345"), 1, 2, S("23")); 101 test(S(""), 0, SV("12345"), 1, 3, S("234")); 102 test(S(""), 0, SV("12345"), 1, 4, S("2345")); 103 test(S(""), 0, SV("12345"), 1, 5, S("2345")); 104 test(S(""), 0, SV("12345"), 2, 0, S("")); 105 test(S(""), 0, SV("12345"), 2, 1, S("3")); 106 test(S(""), 0, SV("12345"), 2, 2, S("34")); 107 test(S(""), 0, SV("12345"), 2, 3, S("345")); 108 test(S(""), 0, SV("12345"), 2, 4, S("345")); 109 test(S(""), 0, SV("12345"), 4, 0, S("")); 110 test(S(""), 0, SV("12345"), 4, 1, S("5")); 111 test(S(""), 0, SV("12345"), 4, 2, S("5")); 112 test(S(""), 0, SV("12345"), 5, 0, S("")); 113 test(S(""), 0, SV("12345"), 5, 1, S("")); 114 test(S(""), 0, SV("12345"), 6, 0, S("can't happen")); 115 test(S(""), 0, SV("1234567890"), 0, 0, S("")); 116 test(S(""), 0, SV("1234567890"), 0, 1, S("1")); 117 test(S(""), 0, SV("1234567890"), 0, 5, S("12345")); 118 test(S(""), 0, SV("1234567890"), 0, 9, S("123456789")); 119 test(S(""), 0, SV("1234567890"), 0, 10, S("1234567890")); 120 test(S(""), 0, SV("1234567890"), 0, 11, S("1234567890")); 121 test(S(""), 0, SV("1234567890"), 1, 0, S("")); 122 test(S(""), 0, SV("1234567890"), 1, 1, S("2")); 123 test(S(""), 0, SV("1234567890"), 1, 4, S("2345")); 124 test(S(""), 0, SV("1234567890"), 1, 8, S("23456789")); 125 test(S(""), 0, SV("1234567890"), 1, 9, S("234567890")); 126 test(S(""), 0, SV("1234567890"), 1, 10, S("234567890")); 127 test(S(""), 0, SV("1234567890"), 5, 0, S("")); 128 test(S(""), 0, SV("1234567890"), 5, 1, S("6")); 129 test(S(""), 0, SV("1234567890"), 5, 2, S("67")); 130 test(S(""), 0, SV("1234567890"), 5, 4, S("6789")); 131 test(S(""), 0, SV("1234567890"), 5, 5, S("67890")); 132 test(S(""), 0, SV("1234567890"), 5, 6, S("67890")); 133 test(S(""), 0, SV("1234567890"), 9, 0, S("")); 134 test(S(""), 0, SV("1234567890"), 9, 1, S("0")); 135 test(S(""), 0, SV("1234567890"), 9, 2, S("0")); 136 test(S(""), 0, SV("1234567890"), 10, 0, S("")); 137 test(S(""), 0, SV("1234567890"), 10, 1, S("")); 138 test(S(""), 0, SV("1234567890"), 11, 0, S("can't happen")); 139 } 140 141 template <class S, class SV> 142 void test1() 143 { 144 test(S(""), 0, SV("12345678901234567890"), 0, 0, S("")); 145 test(S(""), 0, SV("12345678901234567890"), 0, 1, S("1")); 146 test(S(""), 0, SV("12345678901234567890"), 0, 10, S("1234567890")); 147 test(S(""), 0, SV("12345678901234567890"), 0, 19, S("1234567890123456789")); 148 test(S(""), 0, SV("12345678901234567890"), 0, 20, S("12345678901234567890")); 149 test(S(""), 0, SV("12345678901234567890"), 0, 21, S("12345678901234567890")); 150 test(S(""), 0, SV("12345678901234567890"), 1, 0, S("")); 151 test(S(""), 0, SV("12345678901234567890"), 1, 1, S("2")); 152 test(S(""), 0, SV("12345678901234567890"), 1, 9, S("234567890")); 153 test(S(""), 0, SV("12345678901234567890"), 1, 18, S("234567890123456789")); 154 test(S(""), 0, SV("12345678901234567890"), 1, 19, S("2345678901234567890")); 155 test(S(""), 0, SV("12345678901234567890"), 1, 20, S("2345678901234567890")); 156 test(S(""), 0, SV("12345678901234567890"), 10, 0, S("")); 157 test(S(""), 0, SV("12345678901234567890"), 10, 1, S("1")); 158 test(S(""), 0, SV("12345678901234567890"), 10, 5, S("12345")); 159 test(S(""), 0, SV("12345678901234567890"), 10, 9, S("123456789")); 160 test(S(""), 0, SV("12345678901234567890"), 10, 10, S("1234567890")); 161 test(S(""), 0, SV("12345678901234567890"), 10, 11, S("1234567890")); 162 test(S(""), 0, SV("12345678901234567890"), 19, 0, S("")); 163 test(S(""), 0, SV("12345678901234567890"), 19, 1, S("0")); 164 test(S(""), 0, SV("12345678901234567890"), 19, 2, S("0")); 165 test(S(""), 0, SV("12345678901234567890"), 20, 0, S("")); 166 test(S(""), 0, SV("12345678901234567890"), 20, 1, S("")); 167 test(S(""), 0, SV("12345678901234567890"), 21, 0, S("can't happen")); 168 test(S(""), 1, SV(""), 0, 0, S("can't happen")); 169 test(S(""), 1, SV(""), 0, 1, S("can't happen")); 170 test(S(""), 1, SV(""), 1, 0, S("can't happen")); 171 test(S(""), 1, SV("12345"), 0, 0, S("can't happen")); 172 test(S(""), 1, SV("12345"), 0, 1, S("can't happen")); 173 test(S(""), 1, SV("12345"), 0, 2, S("can't happen")); 174 test(S(""), 1, SV("12345"), 0, 4, S("can't happen")); 175 test(S(""), 1, SV("12345"), 0, 5, S("can't happen")); 176 test(S(""), 1, SV("12345"), 0, 6, S("can't happen")); 177 test(S(""), 1, SV("12345"), 1, 0, S("can't happen")); 178 test(S(""), 1, SV("12345"), 1, 1, S("can't happen")); 179 test(S(""), 1, SV("12345"), 1, 2, S("can't happen")); 180 test(S(""), 1, SV("12345"), 1, 3, S("can't happen")); 181 test(S(""), 1, SV("12345"), 1, 4, S("can't happen")); 182 test(S(""), 1, SV("12345"), 1, 5, S("can't happen")); 183 test(S(""), 1, SV("12345"), 2, 0, S("can't happen")); 184 test(S(""), 1, SV("12345"), 2, 1, S("can't happen")); 185 test(S(""), 1, SV("12345"), 2, 2, S("can't happen")); 186 test(S(""), 1, SV("12345"), 2, 3, S("can't happen")); 187 test(S(""), 1, SV("12345"), 2, 4, S("can't happen")); 188 test(S(""), 1, SV("12345"), 4, 0, S("can't happen")); 189 test(S(""), 1, SV("12345"), 4, 1, S("can't happen")); 190 test(S(""), 1, SV("12345"), 4, 2, S("can't happen")); 191 test(S(""), 1, SV("12345"), 5, 0, S("can't happen")); 192 test(S(""), 1, SV("12345"), 5, 1, S("can't happen")); 193 test(S(""), 1, SV("12345"), 6, 0, S("can't happen")); 194 } 195 196 template <class S, class SV> 197 void test2() 198 { 199 test(S(""), 1, SV("1234567890"), 0, 0, S("can't happen")); 200 test(S(""), 1, SV("1234567890"), 0, 1, S("can't happen")); 201 test(S(""), 1, SV("1234567890"), 0, 5, S("can't happen")); 202 test(S(""), 1, SV("1234567890"), 0, 9, S("can't happen")); 203 test(S(""), 1, SV("1234567890"), 0, 10, S("can't happen")); 204 test(S(""), 1, SV("1234567890"), 0, 11, S("can't happen")); 205 test(S(""), 1, SV("1234567890"), 1, 0, S("can't happen")); 206 test(S(""), 1, SV("1234567890"), 1, 1, S("can't happen")); 207 test(S(""), 1, SV("1234567890"), 1, 4, S("can't happen")); 208 test(S(""), 1, SV("1234567890"), 1, 8, S("can't happen")); 209 test(S(""), 1, SV("1234567890"), 1, 9, S("can't happen")); 210 test(S(""), 1, SV("1234567890"), 1, 10, S("can't happen")); 211 test(S(""), 1, SV("1234567890"), 5, 0, S("can't happen")); 212 test(S(""), 1, SV("1234567890"), 5, 1, S("can't happen")); 213 test(S(""), 1, SV("1234567890"), 5, 2, S("can't happen")); 214 test(S(""), 1, SV("1234567890"), 5, 4, S("can't happen")); 215 test(S(""), 1, SV("1234567890"), 5, 5, S("can't happen")); 216 test(S(""), 1, SV("1234567890"), 5, 6, S("can't happen")); 217 test(S(""), 1, SV("1234567890"), 9, 0, S("can't happen")); 218 test(S(""), 1, SV("1234567890"), 9, 1, S("can't happen")); 219 test(S(""), 1, SV("1234567890"), 9, 2, S("can't happen")); 220 test(S(""), 1, SV("1234567890"), 10, 0, S("can't happen")); 221 test(S(""), 1, SV("1234567890"), 10, 1, S("can't happen")); 222 test(S(""), 1, SV("1234567890"), 11, 0, S("can't happen")); 223 test(S(""), 1, SV("12345678901234567890"), 0, 0, S("can't happen")); 224 test(S(""), 1, SV("12345678901234567890"), 0, 1, S("can't happen")); 225 test(S(""), 1, SV("12345678901234567890"), 0, 10, S("can't happen")); 226 test(S(""), 1, SV("12345678901234567890"), 0, 19, S("can't happen")); 227 test(S(""), 1, SV("12345678901234567890"), 0, 20, S("can't happen")); 228 test(S(""), 1, SV("12345678901234567890"), 0, 21, S("can't happen")); 229 test(S(""), 1, SV("12345678901234567890"), 1, 0, S("can't happen")); 230 test(S(""), 1, SV("12345678901234567890"), 1, 1, S("can't happen")); 231 test(S(""), 1, SV("12345678901234567890"), 1, 9, S("can't happen")); 232 test(S(""), 1, SV("12345678901234567890"), 1, 18, S("can't happen")); 233 test(S(""), 1, SV("12345678901234567890"), 1, 19, S("can't happen")); 234 test(S(""), 1, SV("12345678901234567890"), 1, 20, S("can't happen")); 235 test(S(""), 1, SV("12345678901234567890"), 10, 0, S("can't happen")); 236 test(S(""), 1, SV("12345678901234567890"), 10, 1, S("can't happen")); 237 test(S(""), 1, SV("12345678901234567890"), 10, 5, S("can't happen")); 238 test(S(""), 1, SV("12345678901234567890"), 10, 9, S("can't happen")); 239 test(S(""), 1, SV("12345678901234567890"), 10, 10, S("can't happen")); 240 test(S(""), 1, SV("12345678901234567890"), 10, 11, S("can't happen")); 241 test(S(""), 1, SV("12345678901234567890"), 19, 0, S("can't happen")); 242 test(S(""), 1, SV("12345678901234567890"), 19, 1, S("can't happen")); 243 test(S(""), 1, SV("12345678901234567890"), 19, 2, S("can't happen")); 244 test(S(""), 1, SV("12345678901234567890"), 20, 0, S("can't happen")); 245 test(S(""), 1, SV("12345678901234567890"), 20, 1, S("can't happen")); 246 test(S(""), 1, SV("12345678901234567890"), 21, 0, S("can't happen")); 247 test(S("abcde"), 0, SV(""), 0, 0, S("abcde")); 248 test(S("abcde"), 0, SV(""), 0, 1, S("abcde")); 249 } 250 251 template <class S, class SV> 252 void test3() 253 { 254 test(S("abcde"), 0, SV(""), 1, 0, S("can't happen")); 255 test(S("abcde"), 0, SV("12345"), 0, 0, S("abcde")); 256 test(S("abcde"), 0, SV("12345"), 0, 1, S("1abcde")); 257 test(S("abcde"), 0, SV("12345"), 0, 2, S("12abcde")); 258 test(S("abcde"), 0, SV("12345"), 0, 4, S("1234abcde")); 259 test(S("abcde"), 0, SV("12345"), 0, 5, S("12345abcde")); 260 test(S("abcde"), 0, SV("12345"), 0, 6, S("12345abcde")); 261 test(S("abcde"), 0, SV("12345"), 1, 0, S("abcde")); 262 test(S("abcde"), 0, SV("12345"), 1, 1, S("2abcde")); 263 test(S("abcde"), 0, SV("12345"), 1, 2, S("23abcde")); 264 test(S("abcde"), 0, SV("12345"), 1, 3, S("234abcde")); 265 test(S("abcde"), 0, SV("12345"), 1, 4, S("2345abcde")); 266 test(S("abcde"), 0, SV("12345"), 1, 5, S("2345abcde")); 267 test(S("abcde"), 0, SV("12345"), 2, 0, S("abcde")); 268 test(S("abcde"), 0, SV("12345"), 2, 1, S("3abcde")); 269 test(S("abcde"), 0, SV("12345"), 2, 2, S("34abcde")); 270 test(S("abcde"), 0, SV("12345"), 2, 3, S("345abcde")); 271 test(S("abcde"), 0, SV("12345"), 2, 4, S("345abcde")); 272 test(S("abcde"), 0, SV("12345"), 4, 0, S("abcde")); 273 test(S("abcde"), 0, SV("12345"), 4, 1, S("5abcde")); 274 test(S("abcde"), 0, SV("12345"), 4, 2, S("5abcde")); 275 test(S("abcde"), 0, SV("12345"), 5, 0, S("abcde")); 276 test(S("abcde"), 0, SV("12345"), 5, 1, S("abcde")); 277 test(S("abcde"), 0, SV("12345"), 6, 0, S("can't happen")); 278 test(S("abcde"), 0, SV("1234567890"), 0, 0, S("abcde")); 279 test(S("abcde"), 0, SV("1234567890"), 0, 1, S("1abcde")); 280 test(S("abcde"), 0, SV("1234567890"), 0, 5, S("12345abcde")); 281 test(S("abcde"), 0, SV("1234567890"), 0, 9, S("123456789abcde")); 282 test(S("abcde"), 0, SV("1234567890"), 0, 10, S("1234567890abcde")); 283 test(S("abcde"), 0, SV("1234567890"), 0, 11, S("1234567890abcde")); 284 test(S("abcde"), 0, SV("1234567890"), 1, 0, S("abcde")); 285 test(S("abcde"), 0, SV("1234567890"), 1, 1, S("2abcde")); 286 test(S("abcde"), 0, SV("1234567890"), 1, 4, S("2345abcde")); 287 test(S("abcde"), 0, SV("1234567890"), 1, 8, S("23456789abcde")); 288 test(S("abcde"), 0, SV("1234567890"), 1, 9, S("234567890abcde")); 289 test(S("abcde"), 0, SV("1234567890"), 1, 10, S("234567890abcde")); 290 test(S("abcde"), 0, SV("1234567890"), 5, 0, S("abcde")); 291 test(S("abcde"), 0, SV("1234567890"), 5, 1, S("6abcde")); 292 test(S("abcde"), 0, SV("1234567890"), 5, 2, S("67abcde")); 293 test(S("abcde"), 0, SV("1234567890"), 5, 4, S("6789abcde")); 294 test(S("abcde"), 0, SV("1234567890"), 5, 5, S("67890abcde")); 295 test(S("abcde"), 0, SV("1234567890"), 5, 6, S("67890abcde")); 296 test(S("abcde"), 0, SV("1234567890"), 9, 0, S("abcde")); 297 test(S("abcde"), 0, SV("1234567890"), 9, 1, S("0abcde")); 298 test(S("abcde"), 0, SV("1234567890"), 9, 2, S("0abcde")); 299 test(S("abcde"), 0, SV("1234567890"), 10, 0, S("abcde")); 300 test(S("abcde"), 0, SV("1234567890"), 10, 1, S("abcde")); 301 test(S("abcde"), 0, SV("1234567890"), 11, 0, S("can't happen")); 302 test(S("abcde"), 0, SV("12345678901234567890"), 0, 0, S("abcde")); 303 test(S("abcde"), 0, SV("12345678901234567890"), 0, 1, S("1abcde")); 304 } 305 306 template <class S, class SV> 307 void test4() 308 { 309 test(S("abcde"), 0, SV("12345678901234567890"), 0, 10, S("1234567890abcde")); 310 test(S("abcde"), 0, SV("12345678901234567890"), 0, 19, S("1234567890123456789abcde")); 311 test(S("abcde"), 0, SV("12345678901234567890"), 0, 20, S("12345678901234567890abcde")); 312 test(S("abcde"), 0, SV("12345678901234567890"), 0, 21, S("12345678901234567890abcde")); 313 test(S("abcde"), 0, SV("12345678901234567890"), 1, 0, S("abcde")); 314 test(S("abcde"), 0, SV("12345678901234567890"), 1, 1, S("2abcde")); 315 test(S("abcde"), 0, SV("12345678901234567890"), 1, 9, S("234567890abcde")); 316 test(S("abcde"), 0, SV("12345678901234567890"), 1, 18, S("234567890123456789abcde")); 317 test(S("abcde"), 0, SV("12345678901234567890"), 1, 19, S("2345678901234567890abcde")); 318 test(S("abcde"), 0, SV("12345678901234567890"), 1, 20, S("2345678901234567890abcde")); 319 test(S("abcde"), 0, SV("12345678901234567890"), 10, 0, S("abcde")); 320 test(S("abcde"), 0, SV("12345678901234567890"), 10, 1, S("1abcde")); 321 test(S("abcde"), 0, SV("12345678901234567890"), 10, 5, S("12345abcde")); 322 test(S("abcde"), 0, SV("12345678901234567890"), 10, 9, S("123456789abcde")); 323 test(S("abcde"), 0, SV("12345678901234567890"), 10, 10, S("1234567890abcde")); 324 test(S("abcde"), 0, SV("12345678901234567890"), 10, 11, S("1234567890abcde")); 325 test(S("abcde"), 0, SV("12345678901234567890"), 19, 0, S("abcde")); 326 test(S("abcde"), 0, SV("12345678901234567890"), 19, 1, S("0abcde")); 327 test(S("abcde"), 0, SV("12345678901234567890"), 19, 2, S("0abcde")); 328 test(S("abcde"), 0, SV("12345678901234567890"), 20, 0, S("abcde")); 329 test(S("abcde"), 0, SV("12345678901234567890"), 20, 1, S("abcde")); 330 test(S("abcde"), 0, SV("12345678901234567890"), 21, 0, S("can't happen")); 331 test(S("abcde"), 1, SV(""), 0, 0, S("abcde")); 332 test(S("abcde"), 1, SV(""), 0, 1, S("abcde")); 333 test(S("abcde"), 1, SV(""), 1, 0, S("can't happen")); 334 test(S("abcde"), 1, SV("12345"), 0, 0, S("abcde")); 335 test(S("abcde"), 1, SV("12345"), 0, 1, S("a1bcde")); 336 test(S("abcde"), 1, SV("12345"), 0, 2, S("a12bcde")); 337 test(S("abcde"), 1, SV("12345"), 0, 4, S("a1234bcde")); 338 test(S("abcde"), 1, SV("12345"), 0, 5, S("a12345bcde")); 339 test(S("abcde"), 1, SV("12345"), 0, 6, S("a12345bcde")); 340 test(S("abcde"), 1, SV("12345"), 1, 0, S("abcde")); 341 test(S("abcde"), 1, SV("12345"), 1, 1, S("a2bcde")); 342 test(S("abcde"), 1, SV("12345"), 1, 2, S("a23bcde")); 343 test(S("abcde"), 1, SV("12345"), 1, 3, S("a234bcde")); 344 test(S("abcde"), 1, SV("12345"), 1, 4, S("a2345bcde")); 345 test(S("abcde"), 1, SV("12345"), 1, 5, S("a2345bcde")); 346 test(S("abcde"), 1, SV("12345"), 2, 0, S("abcde")); 347 test(S("abcde"), 1, SV("12345"), 2, 1, S("a3bcde")); 348 test(S("abcde"), 1, SV("12345"), 2, 2, S("a34bcde")); 349 test(S("abcde"), 1, SV("12345"), 2, 3, S("a345bcde")); 350 test(S("abcde"), 1, SV("12345"), 2, 4, S("a345bcde")); 351 test(S("abcde"), 1, SV("12345"), 4, 0, S("abcde")); 352 test(S("abcde"), 1, SV("12345"), 4, 1, S("a5bcde")); 353 test(S("abcde"), 1, SV("12345"), 4, 2, S("a5bcde")); 354 test(S("abcde"), 1, SV("12345"), 5, 0, S("abcde")); 355 test(S("abcde"), 1, SV("12345"), 5, 1, S("abcde")); 356 test(S("abcde"), 1, SV("12345"), 6, 0, S("can't happen")); 357 test(S("abcde"), 1, SV("1234567890"), 0, 0, S("abcde")); 358 test(S("abcde"), 1, SV("1234567890"), 0, 1, S("a1bcde")); 359 } 360 361 template <class S, class SV> 362 void test5() 363 { 364 test(S("abcde"), 1, SV("1234567890"), 0, 5, S("a12345bcde")); 365 test(S("abcde"), 1, SV("1234567890"), 0, 9, S("a123456789bcde")); 366 test(S("abcde"), 1, SV("1234567890"), 0, 10, S("a1234567890bcde")); 367 test(S("abcde"), 1, SV("1234567890"), 0, 11, S("a1234567890bcde")); 368 test(S("abcde"), 1, SV("1234567890"), 1, 0, S("abcde")); 369 test(S("abcde"), 1, SV("1234567890"), 1, 1, S("a2bcde")); 370 test(S("abcde"), 1, SV("1234567890"), 1, 4, S("a2345bcde")); 371 test(S("abcde"), 1, SV("1234567890"), 1, 8, S("a23456789bcde")); 372 test(S("abcde"), 1, SV("1234567890"), 1, 9, S("a234567890bcde")); 373 test(S("abcde"), 1, SV("1234567890"), 1, 10, S("a234567890bcde")); 374 test(S("abcde"), 1, SV("1234567890"), 5, 0, S("abcde")); 375 test(S("abcde"), 1, SV("1234567890"), 5, 1, S("a6bcde")); 376 test(S("abcde"), 1, SV("1234567890"), 5, 2, S("a67bcde")); 377 test(S("abcde"), 1, SV("1234567890"), 5, 4, S("a6789bcde")); 378 test(S("abcde"), 1, SV("1234567890"), 5, 5, S("a67890bcde")); 379 test(S("abcde"), 1, SV("1234567890"), 5, 6, S("a67890bcde")); 380 test(S("abcde"), 1, SV("1234567890"), 9, 0, S("abcde")); 381 test(S("abcde"), 1, SV("1234567890"), 9, 1, S("a0bcde")); 382 test(S("abcde"), 1, SV("1234567890"), 9, 2, S("a0bcde")); 383 test(S("abcde"), 1, SV("1234567890"), 10, 0, S("abcde")); 384 test(S("abcde"), 1, SV("1234567890"), 10, 1, S("abcde")); 385 test(S("abcde"), 1, SV("1234567890"), 11, 0, S("can't happen")); 386 test(S("abcde"), 1, SV("12345678901234567890"), 0, 0, S("abcde")); 387 test(S("abcde"), 1, SV("12345678901234567890"), 0, 1, S("a1bcde")); 388 test(S("abcde"), 1, SV("12345678901234567890"), 0, 10, S("a1234567890bcde")); 389 test(S("abcde"), 1, SV("12345678901234567890"), 0, 19, S("a1234567890123456789bcde")); 390 test(S("abcde"), 1, SV("12345678901234567890"), 0, 20, S("a12345678901234567890bcde")); 391 test(S("abcde"), 1, SV("12345678901234567890"), 0, 21, S("a12345678901234567890bcde")); 392 test(S("abcde"), 1, SV("12345678901234567890"), 1, 0, S("abcde")); 393 test(S("abcde"), 1, SV("12345678901234567890"), 1, 1, S("a2bcde")); 394 test(S("abcde"), 1, SV("12345678901234567890"), 1, 9, S("a234567890bcde")); 395 test(S("abcde"), 1, SV("12345678901234567890"), 1, 18, S("a234567890123456789bcde")); 396 test(S("abcde"), 1, SV("12345678901234567890"), 1, 19, S("a2345678901234567890bcde")); 397 test(S("abcde"), 1, SV("12345678901234567890"), 1, 20, S("a2345678901234567890bcde")); 398 test(S("abcde"), 1, SV("12345678901234567890"), 10, 0, S("abcde")); 399 test(S("abcde"), 1, SV("12345678901234567890"), 10, 1, S("a1bcde")); 400 test(S("abcde"), 1, SV("12345678901234567890"), 10, 5, S("a12345bcde")); 401 test(S("abcde"), 1, SV("12345678901234567890"), 10, 9, S("a123456789bcde")); 402 test(S("abcde"), 1, SV("12345678901234567890"), 10, 10, S("a1234567890bcde")); 403 test(S("abcde"), 1, SV("12345678901234567890"), 10, 11, S("a1234567890bcde")); 404 test(S("abcde"), 1, SV("12345678901234567890"), 19, 0, S("abcde")); 405 test(S("abcde"), 1, SV("12345678901234567890"), 19, 1, S("a0bcde")); 406 test(S("abcde"), 1, SV("12345678901234567890"), 19, 2, S("a0bcde")); 407 test(S("abcde"), 1, SV("12345678901234567890"), 20, 0, S("abcde")); 408 test(S("abcde"), 1, SV("12345678901234567890"), 20, 1, S("abcde")); 409 test(S("abcde"), 1, SV("12345678901234567890"), 21, 0, S("can't happen")); 410 test(S("abcde"), 2, SV(""), 0, 0, S("abcde")); 411 test(S("abcde"), 2, SV(""), 0, 1, S("abcde")); 412 test(S("abcde"), 2, SV(""), 1, 0, S("can't happen")); 413 test(S("abcde"), 2, SV("12345"), 0, 0, S("abcde")); 414 } 415 416 template <class S, class SV> 417 void test6() 418 { 419 test(S("abcde"), 2, SV("12345"), 0, 1, S("ab1cde")); 420 test(S("abcde"), 2, SV("12345"), 0, 2, S("ab12cde")); 421 test(S("abcde"), 2, SV("12345"), 0, 4, S("ab1234cde")); 422 test(S("abcde"), 2, SV("12345"), 0, 5, S("ab12345cde")); 423 test(S("abcde"), 2, SV("12345"), 0, 6, S("ab12345cde")); 424 test(S("abcde"), 2, SV("12345"), 1, 0, S("abcde")); 425 test(S("abcde"), 2, SV("12345"), 1, 1, S("ab2cde")); 426 test(S("abcde"), 2, SV("12345"), 1, 2, S("ab23cde")); 427 test(S("abcde"), 2, SV("12345"), 1, 3, S("ab234cde")); 428 test(S("abcde"), 2, SV("12345"), 1, 4, S("ab2345cde")); 429 test(S("abcde"), 2, SV("12345"), 1, 5, S("ab2345cde")); 430 test(S("abcde"), 2, SV("12345"), 2, 0, S("abcde")); 431 test(S("abcde"), 2, SV("12345"), 2, 1, S("ab3cde")); 432 test(S("abcde"), 2, SV("12345"), 2, 2, S("ab34cde")); 433 test(S("abcde"), 2, SV("12345"), 2, 3, S("ab345cde")); 434 test(S("abcde"), 2, SV("12345"), 2, 4, S("ab345cde")); 435 test(S("abcde"), 2, SV("12345"), 4, 0, S("abcde")); 436 test(S("abcde"), 2, SV("12345"), 4, 1, S("ab5cde")); 437 test(S("abcde"), 2, SV("12345"), 4, 2, S("ab5cde")); 438 test(S("abcde"), 2, SV("12345"), 5, 0, S("abcde")); 439 test(S("abcde"), 2, SV("12345"), 5, 1, S("abcde")); 440 test(S("abcde"), 2, SV("12345"), 6, 0, S("can't happen")); 441 test(S("abcde"), 2, SV("1234567890"), 0, 0, S("abcde")); 442 test(S("abcde"), 2, SV("1234567890"), 0, 1, S("ab1cde")); 443 test(S("abcde"), 2, SV("1234567890"), 0, 5, S("ab12345cde")); 444 test(S("abcde"), 2, SV("1234567890"), 0, 9, S("ab123456789cde")); 445 test(S("abcde"), 2, SV("1234567890"), 0, 10, S("ab1234567890cde")); 446 test(S("abcde"), 2, SV("1234567890"), 0, 11, S("ab1234567890cde")); 447 test(S("abcde"), 2, SV("1234567890"), 1, 0, S("abcde")); 448 test(S("abcde"), 2, SV("1234567890"), 1, 1, S("ab2cde")); 449 test(S("abcde"), 2, SV("1234567890"), 1, 4, S("ab2345cde")); 450 test(S("abcde"), 2, SV("1234567890"), 1, 8, S("ab23456789cde")); 451 test(S("abcde"), 2, SV("1234567890"), 1, 9, S("ab234567890cde")); 452 test(S("abcde"), 2, SV("1234567890"), 1, 10, S("ab234567890cde")); 453 test(S("abcde"), 2, SV("1234567890"), 5, 0, S("abcde")); 454 test(S("abcde"), 2, SV("1234567890"), 5, 1, S("ab6cde")); 455 test(S("abcde"), 2, SV("1234567890"), 5, 2, S("ab67cde")); 456 test(S("abcde"), 2, SV("1234567890"), 5, 4, S("ab6789cde")); 457 test(S("abcde"), 2, SV("1234567890"), 5, 5, S("ab67890cde")); 458 test(S("abcde"), 2, SV("1234567890"), 5, 6, S("ab67890cde")); 459 test(S("abcde"), 2, SV("1234567890"), 9, 0, S("abcde")); 460 test(S("abcde"), 2, SV("1234567890"), 9, 1, S("ab0cde")); 461 test(S("abcde"), 2, SV("1234567890"), 9, 2, S("ab0cde")); 462 test(S("abcde"), 2, SV("1234567890"), 10, 0, S("abcde")); 463 test(S("abcde"), 2, SV("1234567890"), 10, 1, S("abcde")); 464 test(S("abcde"), 2, SV("1234567890"), 11, 0, S("can't happen")); 465 test(S("abcde"), 2, SV("12345678901234567890"), 0, 0, S("abcde")); 466 test(S("abcde"), 2, SV("12345678901234567890"), 0, 1, S("ab1cde")); 467 test(S("abcde"), 2, SV("12345678901234567890"), 0, 10, S("ab1234567890cde")); 468 test(S("abcde"), 2, SV("12345678901234567890"), 0, 19, S("ab1234567890123456789cde")); 469 } 470 471 template <class S, class SV> 472 void test7() 473 { 474 test(S("abcde"), 2, SV("12345678901234567890"), 0, 20, S("ab12345678901234567890cde")); 475 test(S("abcde"), 2, SV("12345678901234567890"), 0, 21, S("ab12345678901234567890cde")); 476 test(S("abcde"), 2, SV("12345678901234567890"), 1, 0, S("abcde")); 477 test(S("abcde"), 2, SV("12345678901234567890"), 1, 1, S("ab2cde")); 478 test(S("abcde"), 2, SV("12345678901234567890"), 1, 9, S("ab234567890cde")); 479 test(S("abcde"), 2, SV("12345678901234567890"), 1, 18, S("ab234567890123456789cde")); 480 test(S("abcde"), 2, SV("12345678901234567890"), 1, 19, S("ab2345678901234567890cde")); 481 test(S("abcde"), 2, SV("12345678901234567890"), 1, 20, S("ab2345678901234567890cde")); 482 test(S("abcde"), 2, SV("12345678901234567890"), 10, 0, S("abcde")); 483 test(S("abcde"), 2, SV("12345678901234567890"), 10, 1, S("ab1cde")); 484 test(S("abcde"), 2, SV("12345678901234567890"), 10, 5, S("ab12345cde")); 485 test(S("abcde"), 2, SV("12345678901234567890"), 10, 9, S("ab123456789cde")); 486 test(S("abcde"), 2, SV("12345678901234567890"), 10, 10, S("ab1234567890cde")); 487 test(S("abcde"), 2, SV("12345678901234567890"), 10, 11, S("ab1234567890cde")); 488 test(S("abcde"), 2, SV("12345678901234567890"), 19, 0, S("abcde")); 489 test(S("abcde"), 2, SV("12345678901234567890"), 19, 1, S("ab0cde")); 490 test(S("abcde"), 2, SV("12345678901234567890"), 19, 2, S("ab0cde")); 491 test(S("abcde"), 2, SV("12345678901234567890"), 20, 0, S("abcde")); 492 test(S("abcde"), 2, SV("12345678901234567890"), 20, 1, S("abcde")); 493 test(S("abcde"), 2, SV("12345678901234567890"), 21, 0, S("can't happen")); 494 test(S("abcde"), 4, SV(""), 0, 0, S("abcde")); 495 test(S("abcde"), 4, SV(""), 0, 1, S("abcde")); 496 test(S("abcde"), 4, SV(""), 1, 0, S("can't happen")); 497 test(S("abcde"), 4, SV("12345"), 0, 0, S("abcde")); 498 test(S("abcde"), 4, SV("12345"), 0, 1, S("abcd1e")); 499 test(S("abcde"), 4, SV("12345"), 0, 2, S("abcd12e")); 500 test(S("abcde"), 4, SV("12345"), 0, 4, S("abcd1234e")); 501 test(S("abcde"), 4, SV("12345"), 0, 5, S("abcd12345e")); 502 test(S("abcde"), 4, SV("12345"), 0, 6, S("abcd12345e")); 503 test(S("abcde"), 4, SV("12345"), 1, 0, S("abcde")); 504 test(S("abcde"), 4, SV("12345"), 1, 1, S("abcd2e")); 505 test(S("abcde"), 4, SV("12345"), 1, 2, S("abcd23e")); 506 test(S("abcde"), 4, SV("12345"), 1, 3, S("abcd234e")); 507 test(S("abcde"), 4, SV("12345"), 1, 4, S("abcd2345e")); 508 test(S("abcde"), 4, SV("12345"), 1, 5, S("abcd2345e")); 509 test(S("abcde"), 4, SV("12345"), 2, 0, S("abcde")); 510 test(S("abcde"), 4, SV("12345"), 2, 1, S("abcd3e")); 511 test(S("abcde"), 4, SV("12345"), 2, 2, S("abcd34e")); 512 test(S("abcde"), 4, SV("12345"), 2, 3, S("abcd345e")); 513 test(S("abcde"), 4, SV("12345"), 2, 4, S("abcd345e")); 514 test(S("abcde"), 4, SV("12345"), 4, 0, S("abcde")); 515 test(S("abcde"), 4, SV("12345"), 4, 1, S("abcd5e")); 516 test(S("abcde"), 4, SV("12345"), 4, 2, S("abcd5e")); 517 test(S("abcde"), 4, SV("12345"), 5, 0, S("abcde")); 518 test(S("abcde"), 4, SV("12345"), 5, 1, S("abcde")); 519 test(S("abcde"), 4, SV("12345"), 6, 0, S("can't happen")); 520 test(S("abcde"), 4, SV("1234567890"), 0, 0, S("abcde")); 521 test(S("abcde"), 4, SV("1234567890"), 0, 1, S("abcd1e")); 522 test(S("abcde"), 4, SV("1234567890"), 0, 5, S("abcd12345e")); 523 test(S("abcde"), 4, SV("1234567890"), 0, 9, S("abcd123456789e")); 524 } 525 526 template <class S, class SV> 527 void test8() 528 { 529 test(S("abcde"), 4, SV("1234567890"), 0, 10, S("abcd1234567890e")); 530 test(S("abcde"), 4, SV("1234567890"), 0, 11, S("abcd1234567890e")); 531 test(S("abcde"), 4, SV("1234567890"), 1, 0, S("abcde")); 532 test(S("abcde"), 4, SV("1234567890"), 1, 1, S("abcd2e")); 533 test(S("abcde"), 4, SV("1234567890"), 1, 4, S("abcd2345e")); 534 test(S("abcde"), 4, SV("1234567890"), 1, 8, S("abcd23456789e")); 535 test(S("abcde"), 4, SV("1234567890"), 1, 9, S("abcd234567890e")); 536 test(S("abcde"), 4, SV("1234567890"), 1, 10, S("abcd234567890e")); 537 test(S("abcde"), 4, SV("1234567890"), 5, 0, S("abcde")); 538 test(S("abcde"), 4, SV("1234567890"), 5, 1, S("abcd6e")); 539 test(S("abcde"), 4, SV("1234567890"), 5, 2, S("abcd67e")); 540 test(S("abcde"), 4, SV("1234567890"), 5, 4, S("abcd6789e")); 541 test(S("abcde"), 4, SV("1234567890"), 5, 5, S("abcd67890e")); 542 test(S("abcde"), 4, SV("1234567890"), 5, 6, S("abcd67890e")); 543 test(S("abcde"), 4, SV("1234567890"), 9, 0, S("abcde")); 544 test(S("abcde"), 4, SV("1234567890"), 9, 1, S("abcd0e")); 545 test(S("abcde"), 4, SV("1234567890"), 9, 2, S("abcd0e")); 546 test(S("abcde"), 4, SV("1234567890"), 10, 0, S("abcde")); 547 test(S("abcde"), 4, SV("1234567890"), 10, 1, S("abcde")); 548 test(S("abcde"), 4, SV("1234567890"), 11, 0, S("can't happen")); 549 test(S("abcde"), 4, SV("12345678901234567890"), 0, 0, S("abcde")); 550 test(S("abcde"), 4, SV("12345678901234567890"), 0, 1, S("abcd1e")); 551 test(S("abcde"), 4, SV("12345678901234567890"), 0, 10, S("abcd1234567890e")); 552 test(S("abcde"), 4, SV("12345678901234567890"), 0, 19, S("abcd1234567890123456789e")); 553 test(S("abcde"), 4, SV("12345678901234567890"), 0, 20, S("abcd12345678901234567890e")); 554 test(S("abcde"), 4, SV("12345678901234567890"), 0, 21, S("abcd12345678901234567890e")); 555 test(S("abcde"), 4, SV("12345678901234567890"), 1, 0, S("abcde")); 556 test(S("abcde"), 4, SV("12345678901234567890"), 1, 1, S("abcd2e")); 557 test(S("abcde"), 4, SV("12345678901234567890"), 1, 9, S("abcd234567890e")); 558 test(S("abcde"), 4, SV("12345678901234567890"), 1, 18, S("abcd234567890123456789e")); 559 test(S("abcde"), 4, SV("12345678901234567890"), 1, 19, S("abcd2345678901234567890e")); 560 test(S("abcde"), 4, SV("12345678901234567890"), 1, 20, S("abcd2345678901234567890e")); 561 test(S("abcde"), 4, SV("12345678901234567890"), 10, 0, S("abcde")); 562 test(S("abcde"), 4, SV("12345678901234567890"), 10, 1, S("abcd1e")); 563 test(S("abcde"), 4, SV("12345678901234567890"), 10, 5, S("abcd12345e")); 564 test(S("abcde"), 4, SV("12345678901234567890"), 10, 9, S("abcd123456789e")); 565 test(S("abcde"), 4, SV("12345678901234567890"), 10, 10, S("abcd1234567890e")); 566 test(S("abcde"), 4, SV("12345678901234567890"), 10, 11, S("abcd1234567890e")); 567 test(S("abcde"), 4, SV("12345678901234567890"), 19, 0, S("abcde")); 568 test(S("abcde"), 4, SV("12345678901234567890"), 19, 1, S("abcd0e")); 569 test(S("abcde"), 4, SV("12345678901234567890"), 19, 2, S("abcd0e")); 570 test(S("abcde"), 4, SV("12345678901234567890"), 20, 0, S("abcde")); 571 test(S("abcde"), 4, SV("12345678901234567890"), 20, 1, S("abcde")); 572 test(S("abcde"), 4, SV("12345678901234567890"), 21, 0, S("can't happen")); 573 test(S("abcde"), 5, SV(""), 0, 0, S("abcde")); 574 test(S("abcde"), 5, SV(""), 0, 1, S("abcde")); 575 test(S("abcde"), 5, SV(""), 1, 0, S("can't happen")); 576 test(S("abcde"), 5, SV("12345"), 0, 0, S("abcde")); 577 test(S("abcde"), 5, SV("12345"), 0, 1, S("abcde1")); 578 test(S("abcde"), 5, SV("12345"), 0, 2, S("abcde12")); 579 } 580 581 template <class S, class SV> 582 void test9() 583 { 584 test(S("abcde"), 5, SV("12345"), 0, 4, S("abcde1234")); 585 test(S("abcde"), 5, SV("12345"), 0, 5, S("abcde12345")); 586 test(S("abcde"), 5, SV("12345"), 0, 6, S("abcde12345")); 587 test(S("abcde"), 5, SV("12345"), 1, 0, S("abcde")); 588 test(S("abcde"), 5, SV("12345"), 1, 1, S("abcde2")); 589 test(S("abcde"), 5, SV("12345"), 1, 2, S("abcde23")); 590 test(S("abcde"), 5, SV("12345"), 1, 3, S("abcde234")); 591 test(S("abcde"), 5, SV("12345"), 1, 4, S("abcde2345")); 592 test(S("abcde"), 5, SV("12345"), 1, 5, S("abcde2345")); 593 test(S("abcde"), 5, SV("12345"), 2, 0, S("abcde")); 594 test(S("abcde"), 5, SV("12345"), 2, 1, S("abcde3")); 595 test(S("abcde"), 5, SV("12345"), 2, 2, S("abcde34")); 596 test(S("abcde"), 5, SV("12345"), 2, 3, S("abcde345")); 597 test(S("abcde"), 5, SV("12345"), 2, 4, S("abcde345")); 598 test(S("abcde"), 5, SV("12345"), 4, 0, S("abcde")); 599 test(S("abcde"), 5, SV("12345"), 4, 1, S("abcde5")); 600 test(S("abcde"), 5, SV("12345"), 4, 2, S("abcde5")); 601 test(S("abcde"), 5, SV("12345"), 5, 0, S("abcde")); 602 test(S("abcde"), 5, SV("12345"), 5, 1, S("abcde")); 603 test(S("abcde"), 5, SV("12345"), 6, 0, S("can't happen")); 604 test(S("abcde"), 5, SV("1234567890"), 0, 0, S("abcde")); 605 test(S("abcde"), 5, SV("1234567890"), 0, 1, S("abcde1")); 606 test(S("abcde"), 5, SV("1234567890"), 0, 5, S("abcde12345")); 607 test(S("abcde"), 5, SV("1234567890"), 0, 9, S("abcde123456789")); 608 test(S("abcde"), 5, SV("1234567890"), 0, 10, S("abcde1234567890")); 609 test(S("abcde"), 5, SV("1234567890"), 0, 11, S("abcde1234567890")); 610 test(S("abcde"), 5, SV("1234567890"), 1, 0, S("abcde")); 611 test(S("abcde"), 5, SV("1234567890"), 1, 1, S("abcde2")); 612 test(S("abcde"), 5, SV("1234567890"), 1, 4, S("abcde2345")); 613 test(S("abcde"), 5, SV("1234567890"), 1, 8, S("abcde23456789")); 614 test(S("abcde"), 5, SV("1234567890"), 1, 9, S("abcde234567890")); 615 test(S("abcde"), 5, SV("1234567890"), 1, 10, S("abcde234567890")); 616 test(S("abcde"), 5, SV("1234567890"), 5, 0, S("abcde")); 617 test(S("abcde"), 5, SV("1234567890"), 5, 1, S("abcde6")); 618 test(S("abcde"), 5, SV("1234567890"), 5, 2, S("abcde67")); 619 test(S("abcde"), 5, SV("1234567890"), 5, 4, S("abcde6789")); 620 test(S("abcde"), 5, SV("1234567890"), 5, 5, S("abcde67890")); 621 test(S("abcde"), 5, SV("1234567890"), 5, 6, S("abcde67890")); 622 test(S("abcde"), 5, SV("1234567890"), 9, 0, S("abcde")); 623 test(S("abcde"), 5, SV("1234567890"), 9, 1, S("abcde0")); 624 test(S("abcde"), 5, SV("1234567890"), 9, 2, S("abcde0")); 625 test(S("abcde"), 5, SV("1234567890"), 10, 0, S("abcde")); 626 test(S("abcde"), 5, SV("1234567890"), 10, 1, S("abcde")); 627 test(S("abcde"), 5, SV("1234567890"), 11, 0, S("can't happen")); 628 test(S("abcde"), 5, SV("12345678901234567890"), 0, 0, S("abcde")); 629 test(S("abcde"), 5, SV("12345678901234567890"), 0, 1, S("abcde1")); 630 test(S("abcde"), 5, SV("12345678901234567890"), 0, 10, S("abcde1234567890")); 631 test(S("abcde"), 5, SV("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); 632 test(S("abcde"), 5, SV("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); 633 test(S("abcde"), 5, SV("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); 634 } 635 636 template <class S, class SV> 637 void test10() 638 { 639 test(S("abcde"), 5, SV("12345678901234567890"), 1, 0, S("abcde")); 640 test(S("abcde"), 5, SV("12345678901234567890"), 1, 1, S("abcde2")); 641 test(S("abcde"), 5, SV("12345678901234567890"), 1, 9, S("abcde234567890")); 642 test(S("abcde"), 5, SV("12345678901234567890"), 1, 18, S("abcde234567890123456789")); 643 test(S("abcde"), 5, SV("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); 644 test(S("abcde"), 5, SV("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); 645 test(S("abcde"), 5, SV("12345678901234567890"), 10, 0, S("abcde")); 646 test(S("abcde"), 5, SV("12345678901234567890"), 10, 1, S("abcde1")); 647 test(S("abcde"), 5, SV("12345678901234567890"), 10, 5, S("abcde12345")); 648 test(S("abcde"), 5, SV("12345678901234567890"), 10, 9, S("abcde123456789")); 649 test(S("abcde"), 5, SV("12345678901234567890"), 10, 10, S("abcde1234567890")); 650 test(S("abcde"), 5, SV("12345678901234567890"), 10, 11, S("abcde1234567890")); 651 test(S("abcde"), 5, SV("12345678901234567890"), 19, 0, S("abcde")); 652 test(S("abcde"), 5, SV("12345678901234567890"), 19, 1, S("abcde0")); 653 test(S("abcde"), 5, SV("12345678901234567890"), 19, 2, S("abcde0")); 654 test(S("abcde"), 5, SV("12345678901234567890"), 20, 0, S("abcde")); 655 test(S("abcde"), 5, SV("12345678901234567890"), 20, 1, S("abcde")); 656 test(S("abcde"), 5, SV("12345678901234567890"), 21, 0, S("can't happen")); 657 test(S("abcde"), 6, SV(""), 0, 0, S("can't happen")); 658 test(S("abcde"), 6, SV(""), 0, 1, S("can't happen")); 659 test(S("abcde"), 6, SV(""), 1, 0, S("can't happen")); 660 test(S("abcde"), 6, SV("12345"), 0, 0, S("can't happen")); 661 test(S("abcde"), 6, SV("12345"), 0, 1, S("can't happen")); 662 test(S("abcde"), 6, SV("12345"), 0, 2, S("can't happen")); 663 test(S("abcde"), 6, SV("12345"), 0, 4, S("can't happen")); 664 test(S("abcde"), 6, SV("12345"), 0, 5, S("can't happen")); 665 test(S("abcde"), 6, SV("12345"), 0, 6, S("can't happen")); 666 test(S("abcde"), 6, SV("12345"), 1, 0, S("can't happen")); 667 test(S("abcde"), 6, SV("12345"), 1, 1, S("can't happen")); 668 test(S("abcde"), 6, SV("12345"), 1, 2, S("can't happen")); 669 test(S("abcde"), 6, SV("12345"), 1, 3, S("can't happen")); 670 test(S("abcde"), 6, SV("12345"), 1, 4, S("can't happen")); 671 test(S("abcde"), 6, SV("12345"), 1, 5, S("can't happen")); 672 test(S("abcde"), 6, SV("12345"), 2, 0, S("can't happen")); 673 test(S("abcde"), 6, SV("12345"), 2, 1, S("can't happen")); 674 test(S("abcde"), 6, SV("12345"), 2, 2, S("can't happen")); 675 test(S("abcde"), 6, SV("12345"), 2, 3, S("can't happen")); 676 test(S("abcde"), 6, SV("12345"), 2, 4, S("can't happen")); 677 test(S("abcde"), 6, SV("12345"), 4, 0, S("can't happen")); 678 test(S("abcde"), 6, SV("12345"), 4, 1, S("can't happen")); 679 test(S("abcde"), 6, SV("12345"), 4, 2, S("can't happen")); 680 test(S("abcde"), 6, SV("12345"), 5, 0, S("can't happen")); 681 test(S("abcde"), 6, SV("12345"), 5, 1, S("can't happen")); 682 test(S("abcde"), 6, SV("12345"), 6, 0, S("can't happen")); 683 test(S("abcde"), 6, SV("1234567890"), 0, 0, S("can't happen")); 684 test(S("abcde"), 6, SV("1234567890"), 0, 1, S("can't happen")); 685 test(S("abcde"), 6, SV("1234567890"), 0, 5, S("can't happen")); 686 test(S("abcde"), 6, SV("1234567890"), 0, 9, S("can't happen")); 687 test(S("abcde"), 6, SV("1234567890"), 0, 10, S("can't happen")); 688 test(S("abcde"), 6, SV("1234567890"), 0, 11, S("can't happen")); 689 } 690 691 template <class S, class SV> 692 void test11() 693 { 694 test(S("abcde"), 6, SV("1234567890"), 1, 0, S("can't happen")); 695 test(S("abcde"), 6, SV("1234567890"), 1, 1, S("can't happen")); 696 test(S("abcde"), 6, SV("1234567890"), 1, 4, S("can't happen")); 697 test(S("abcde"), 6, SV("1234567890"), 1, 8, S("can't happen")); 698 test(S("abcde"), 6, SV("1234567890"), 1, 9, S("can't happen")); 699 test(S("abcde"), 6, SV("1234567890"), 1, 10, S("can't happen")); 700 test(S("abcde"), 6, SV("1234567890"), 5, 0, S("can't happen")); 701 test(S("abcde"), 6, SV("1234567890"), 5, 1, S("can't happen")); 702 test(S("abcde"), 6, SV("1234567890"), 5, 2, S("can't happen")); 703 test(S("abcde"), 6, SV("1234567890"), 5, 4, S("can't happen")); 704 test(S("abcde"), 6, SV("1234567890"), 5, 5, S("can't happen")); 705 test(S("abcde"), 6, SV("1234567890"), 5, 6, S("can't happen")); 706 test(S("abcde"), 6, SV("1234567890"), 9, 0, S("can't happen")); 707 test(S("abcde"), 6, SV("1234567890"), 9, 1, S("can't happen")); 708 test(S("abcde"), 6, SV("1234567890"), 9, 2, S("can't happen")); 709 test(S("abcde"), 6, SV("1234567890"), 10, 0, S("can't happen")); 710 test(S("abcde"), 6, SV("1234567890"), 10, 1, S("can't happen")); 711 test(S("abcde"), 6, SV("1234567890"), 11, 0, S("can't happen")); 712 test(S("abcde"), 6, SV("12345678901234567890"), 0, 0, S("can't happen")); 713 test(S("abcde"), 6, SV("12345678901234567890"), 0, 1, S("can't happen")); 714 test(S("abcde"), 6, SV("12345678901234567890"), 0, 10, S("can't happen")); 715 test(S("abcde"), 6, SV("12345678901234567890"), 0, 19, S("can't happen")); 716 test(S("abcde"), 6, SV("12345678901234567890"), 0, 20, S("can't happen")); 717 test(S("abcde"), 6, SV("12345678901234567890"), 0, 21, S("can't happen")); 718 test(S("abcde"), 6, SV("12345678901234567890"), 1, 0, S("can't happen")); 719 test(S("abcde"), 6, SV("12345678901234567890"), 1, 1, S("can't happen")); 720 test(S("abcde"), 6, SV("12345678901234567890"), 1, 9, S("can't happen")); 721 test(S("abcde"), 6, SV("12345678901234567890"), 1, 18, S("can't happen")); 722 test(S("abcde"), 6, SV("12345678901234567890"), 1, 19, S("can't happen")); 723 test(S("abcde"), 6, SV("12345678901234567890"), 1, 20, S("can't happen")); 724 test(S("abcde"), 6, SV("12345678901234567890"), 10, 0, S("can't happen")); 725 test(S("abcde"), 6, SV("12345678901234567890"), 10, 1, S("can't happen")); 726 test(S("abcde"), 6, SV("12345678901234567890"), 10, 5, S("can't happen")); 727 test(S("abcde"), 6, SV("12345678901234567890"), 10, 9, S("can't happen")); 728 test(S("abcde"), 6, SV("12345678901234567890"), 10, 10, S("can't happen")); 729 test(S("abcde"), 6, SV("12345678901234567890"), 10, 11, S("can't happen")); 730 test(S("abcde"), 6, SV("12345678901234567890"), 19, 0, S("can't happen")); 731 test(S("abcde"), 6, SV("12345678901234567890"), 19, 1, S("can't happen")); 732 test(S("abcde"), 6, SV("12345678901234567890"), 19, 2, S("can't happen")); 733 test(S("abcde"), 6, SV("12345678901234567890"), 20, 0, S("can't happen")); 734 test(S("abcde"), 6, SV("12345678901234567890"), 20, 1, S("can't happen")); 735 test(S("abcde"), 6, SV("12345678901234567890"), 21, 0, S("can't happen")); 736 test(S("abcdefghij"), 0, SV(""), 0, 0, S("abcdefghij")); 737 test(S("abcdefghij"), 0, SV(""), 0, 1, S("abcdefghij")); 738 test(S("abcdefghij"), 0, SV(""), 1, 0, S("can't happen")); 739 test(S("abcdefghij"), 0, SV("12345"), 0, 0, S("abcdefghij")); 740 test(S("abcdefghij"), 0, SV("12345"), 0, 1, S("1abcdefghij")); 741 test(S("abcdefghij"), 0, SV("12345"), 0, 2, S("12abcdefghij")); 742 test(S("abcdefghij"), 0, SV("12345"), 0, 4, S("1234abcdefghij")); 743 test(S("abcdefghij"), 0, SV("12345"), 0, 5, S("12345abcdefghij")); 744 } 745 746 template <class S, class SV> 747 void test12() 748 { 749 test(S("abcdefghij"), 0, SV("12345"), 0, 6, S("12345abcdefghij")); 750 test(S("abcdefghij"), 0, SV("12345"), 1, 0, S("abcdefghij")); 751 test(S("abcdefghij"), 0, SV("12345"), 1, 1, S("2abcdefghij")); 752 test(S("abcdefghij"), 0, SV("12345"), 1, 2, S("23abcdefghij")); 753 test(S("abcdefghij"), 0, SV("12345"), 1, 3, S("234abcdefghij")); 754 test(S("abcdefghij"), 0, SV("12345"), 1, 4, S("2345abcdefghij")); 755 test(S("abcdefghij"), 0, SV("12345"), 1, 5, S("2345abcdefghij")); 756 test(S("abcdefghij"), 0, SV("12345"), 2, 0, S("abcdefghij")); 757 test(S("abcdefghij"), 0, SV("12345"), 2, 1, S("3abcdefghij")); 758 test(S("abcdefghij"), 0, SV("12345"), 2, 2, S("34abcdefghij")); 759 test(S("abcdefghij"), 0, SV("12345"), 2, 3, S("345abcdefghij")); 760 test(S("abcdefghij"), 0, SV("12345"), 2, 4, S("345abcdefghij")); 761 test(S("abcdefghij"), 0, SV("12345"), 4, 0, S("abcdefghij")); 762 test(S("abcdefghij"), 0, SV("12345"), 4, 1, S("5abcdefghij")); 763 test(S("abcdefghij"), 0, SV("12345"), 4, 2, S("5abcdefghij")); 764 test(S("abcdefghij"), 0, SV("12345"), 5, 0, S("abcdefghij")); 765 test(S("abcdefghij"), 0, SV("12345"), 5, 1, S("abcdefghij")); 766 test(S("abcdefghij"), 0, SV("12345"), 6, 0, S("can't happen")); 767 test(S("abcdefghij"), 0, SV("1234567890"), 0, 0, S("abcdefghij")); 768 test(S("abcdefghij"), 0, SV("1234567890"), 0, 1, S("1abcdefghij")); 769 test(S("abcdefghij"), 0, SV("1234567890"), 0, 5, S("12345abcdefghij")); 770 test(S("abcdefghij"), 0, SV("1234567890"), 0, 9, S("123456789abcdefghij")); 771 test(S("abcdefghij"), 0, SV("1234567890"), 0, 10, S("1234567890abcdefghij")); 772 test(S("abcdefghij"), 0, SV("1234567890"), 0, 11, S("1234567890abcdefghij")); 773 test(S("abcdefghij"), 0, SV("1234567890"), 1, 0, S("abcdefghij")); 774 test(S("abcdefghij"), 0, SV("1234567890"), 1, 1, S("2abcdefghij")); 775 test(S("abcdefghij"), 0, SV("1234567890"), 1, 4, S("2345abcdefghij")); 776 test(S("abcdefghij"), 0, SV("1234567890"), 1, 8, S("23456789abcdefghij")); 777 test(S("abcdefghij"), 0, SV("1234567890"), 1, 9, S("234567890abcdefghij")); 778 test(S("abcdefghij"), 0, SV("1234567890"), 1, 10, S("234567890abcdefghij")); 779 test(S("abcdefghij"), 0, SV("1234567890"), 5, 0, S("abcdefghij")); 780 test(S("abcdefghij"), 0, SV("1234567890"), 5, 1, S("6abcdefghij")); 781 test(S("abcdefghij"), 0, SV("1234567890"), 5, 2, S("67abcdefghij")); 782 test(S("abcdefghij"), 0, SV("1234567890"), 5, 4, S("6789abcdefghij")); 783 test(S("abcdefghij"), 0, SV("1234567890"), 5, 5, S("67890abcdefghij")); 784 test(S("abcdefghij"), 0, SV("1234567890"), 5, 6, S("67890abcdefghij")); 785 test(S("abcdefghij"), 0, SV("1234567890"), 9, 0, S("abcdefghij")); 786 test(S("abcdefghij"), 0, SV("1234567890"), 9, 1, S("0abcdefghij")); 787 test(S("abcdefghij"), 0, SV("1234567890"), 9, 2, S("0abcdefghij")); 788 test(S("abcdefghij"), 0, SV("1234567890"), 10, 0, S("abcdefghij")); 789 test(S("abcdefghij"), 0, SV("1234567890"), 10, 1, S("abcdefghij")); 790 test(S("abcdefghij"), 0, SV("1234567890"), 11, 0, S("can't happen")); 791 test(S("abcdefghij"), 0, SV("12345678901234567890"), 0, 0, S("abcdefghij")); 792 test(S("abcdefghij"), 0, SV("12345678901234567890"), 0, 1, S("1abcdefghij")); 793 test(S("abcdefghij"), 0, SV("12345678901234567890"), 0, 10, S("1234567890abcdefghij")); 794 test(S("abcdefghij"), 0, SV("12345678901234567890"), 0, 19, S("1234567890123456789abcdefghij")); 795 test(S("abcdefghij"), 0, SV("12345678901234567890"), 0, 20, S("12345678901234567890abcdefghij")); 796 test(S("abcdefghij"), 0, SV("12345678901234567890"), 0, 21, S("12345678901234567890abcdefghij")); 797 test(S("abcdefghij"), 0, SV("12345678901234567890"), 1, 0, S("abcdefghij")); 798 test(S("abcdefghij"), 0, SV("12345678901234567890"), 1, 1, S("2abcdefghij")); 799 } 800 801 template <class S, class SV> 802 void test13() 803 { 804 test(S("abcdefghij"), 0, SV("12345678901234567890"), 1, 9, S("234567890abcdefghij")); 805 test(S("abcdefghij"), 0, SV("12345678901234567890"), 1, 18, S("234567890123456789abcdefghij")); 806 test(S("abcdefghij"), 0, SV("12345678901234567890"), 1, 19, S("2345678901234567890abcdefghij")); 807 test(S("abcdefghij"), 0, SV("12345678901234567890"), 1, 20, S("2345678901234567890abcdefghij")); 808 test(S("abcdefghij"), 0, SV("12345678901234567890"), 10, 0, S("abcdefghij")); 809 test(S("abcdefghij"), 0, SV("12345678901234567890"), 10, 1, S("1abcdefghij")); 810 test(S("abcdefghij"), 0, SV("12345678901234567890"), 10, 5, S("12345abcdefghij")); 811 test(S("abcdefghij"), 0, SV("12345678901234567890"), 10, 9, S("123456789abcdefghij")); 812 test(S("abcdefghij"), 0, SV("12345678901234567890"), 10, 10, S("1234567890abcdefghij")); 813 test(S("abcdefghij"), 0, SV("12345678901234567890"), 10, 11, S("1234567890abcdefghij")); 814 test(S("abcdefghij"), 0, SV("12345678901234567890"), 19, 0, S("abcdefghij")); 815 test(S("abcdefghij"), 0, SV("12345678901234567890"), 19, 1, S("0abcdefghij")); 816 test(S("abcdefghij"), 0, SV("12345678901234567890"), 19, 2, S("0abcdefghij")); 817 test(S("abcdefghij"), 0, SV("12345678901234567890"), 20, 0, S("abcdefghij")); 818 test(S("abcdefghij"), 0, SV("12345678901234567890"), 20, 1, S("abcdefghij")); 819 test(S("abcdefghij"), 0, SV("12345678901234567890"), 21, 0, S("can't happen")); 820 test(S("abcdefghij"), 1, SV(""), 0, 0, S("abcdefghij")); 821 test(S("abcdefghij"), 1, SV(""), 0, 1, S("abcdefghij")); 822 test(S("abcdefghij"), 1, SV(""), 1, 0, S("can't happen")); 823 test(S("abcdefghij"), 1, SV("12345"), 0, 0, S("abcdefghij")); 824 test(S("abcdefghij"), 1, SV("12345"), 0, 1, S("a1bcdefghij")); 825 test(S("abcdefghij"), 1, SV("12345"), 0, 2, S("a12bcdefghij")); 826 test(S("abcdefghij"), 1, SV("12345"), 0, 4, S("a1234bcdefghij")); 827 test(S("abcdefghij"), 1, SV("12345"), 0, 5, S("a12345bcdefghij")); 828 test(S("abcdefghij"), 1, SV("12345"), 0, 6, S("a12345bcdefghij")); 829 test(S("abcdefghij"), 1, SV("12345"), 1, 0, S("abcdefghij")); 830 test(S("abcdefghij"), 1, SV("12345"), 1, 1, S("a2bcdefghij")); 831 test(S("abcdefghij"), 1, SV("12345"), 1, 2, S("a23bcdefghij")); 832 test(S("abcdefghij"), 1, SV("12345"), 1, 3, S("a234bcdefghij")); 833 test(S("abcdefghij"), 1, SV("12345"), 1, 4, S("a2345bcdefghij")); 834 test(S("abcdefghij"), 1, SV("12345"), 1, 5, S("a2345bcdefghij")); 835 test(S("abcdefghij"), 1, SV("12345"), 2, 0, S("abcdefghij")); 836 test(S("abcdefghij"), 1, SV("12345"), 2, 1, S("a3bcdefghij")); 837 test(S("abcdefghij"), 1, SV("12345"), 2, 2, S("a34bcdefghij")); 838 test(S("abcdefghij"), 1, SV("12345"), 2, 3, S("a345bcdefghij")); 839 test(S("abcdefghij"), 1, SV("12345"), 2, 4, S("a345bcdefghij")); 840 test(S("abcdefghij"), 1, SV("12345"), 4, 0, S("abcdefghij")); 841 test(S("abcdefghij"), 1, SV("12345"), 4, 1, S("a5bcdefghij")); 842 test(S("abcdefghij"), 1, SV("12345"), 4, 2, S("a5bcdefghij")); 843 test(S("abcdefghij"), 1, SV("12345"), 5, 0, S("abcdefghij")); 844 test(S("abcdefghij"), 1, SV("12345"), 5, 1, S("abcdefghij")); 845 test(S("abcdefghij"), 1, SV("12345"), 6, 0, S("can't happen")); 846 test(S("abcdefghij"), 1, SV("1234567890"), 0, 0, S("abcdefghij")); 847 test(S("abcdefghij"), 1, SV("1234567890"), 0, 1, S("a1bcdefghij")); 848 test(S("abcdefghij"), 1, SV("1234567890"), 0, 5, S("a12345bcdefghij")); 849 test(S("abcdefghij"), 1, SV("1234567890"), 0, 9, S("a123456789bcdefghij")); 850 test(S("abcdefghij"), 1, SV("1234567890"), 0, 10, S("a1234567890bcdefghij")); 851 test(S("abcdefghij"), 1, SV("1234567890"), 0, 11, S("a1234567890bcdefghij")); 852 test(S("abcdefghij"), 1, SV("1234567890"), 1, 0, S("abcdefghij")); 853 test(S("abcdefghij"), 1, SV("1234567890"), 1, 1, S("a2bcdefghij")); 854 } 855 856 template <class S, class SV> 857 void test14() 858 { 859 test(S("abcdefghij"), 1, SV("1234567890"), 1, 4, S("a2345bcdefghij")); 860 test(S("abcdefghij"), 1, SV("1234567890"), 1, 8, S("a23456789bcdefghij")); 861 test(S("abcdefghij"), 1, SV("1234567890"), 1, 9, S("a234567890bcdefghij")); 862 test(S("abcdefghij"), 1, SV("1234567890"), 1, 10, S("a234567890bcdefghij")); 863 test(S("abcdefghij"), 1, SV("1234567890"), 5, 0, S("abcdefghij")); 864 test(S("abcdefghij"), 1, SV("1234567890"), 5, 1, S("a6bcdefghij")); 865 test(S("abcdefghij"), 1, SV("1234567890"), 5, 2, S("a67bcdefghij")); 866 test(S("abcdefghij"), 1, SV("1234567890"), 5, 4, S("a6789bcdefghij")); 867 test(S("abcdefghij"), 1, SV("1234567890"), 5, 5, S("a67890bcdefghij")); 868 test(S("abcdefghij"), 1, SV("1234567890"), 5, 6, S("a67890bcdefghij")); 869 test(S("abcdefghij"), 1, SV("1234567890"), 9, 0, S("abcdefghij")); 870 test(S("abcdefghij"), 1, SV("1234567890"), 9, 1, S("a0bcdefghij")); 871 test(S("abcdefghij"), 1, SV("1234567890"), 9, 2, S("a0bcdefghij")); 872 test(S("abcdefghij"), 1, SV("1234567890"), 10, 0, S("abcdefghij")); 873 test(S("abcdefghij"), 1, SV("1234567890"), 10, 1, S("abcdefghij")); 874 test(S("abcdefghij"), 1, SV("1234567890"), 11, 0, S("can't happen")); 875 test(S("abcdefghij"), 1, SV("12345678901234567890"), 0, 0, S("abcdefghij")); 876 test(S("abcdefghij"), 1, SV("12345678901234567890"), 0, 1, S("a1bcdefghij")); 877 test(S("abcdefghij"), 1, SV("12345678901234567890"), 0, 10, S("a1234567890bcdefghij")); 878 test(S("abcdefghij"), 1, SV("12345678901234567890"), 0, 19, S("a1234567890123456789bcdefghij")); 879 test(S("abcdefghij"), 1, SV("12345678901234567890"), 0, 20, S("a12345678901234567890bcdefghij")); 880 test(S("abcdefghij"), 1, SV("12345678901234567890"), 0, 21, S("a12345678901234567890bcdefghij")); 881 test(S("abcdefghij"), 1, SV("12345678901234567890"), 1, 0, S("abcdefghij")); 882 test(S("abcdefghij"), 1, SV("12345678901234567890"), 1, 1, S("a2bcdefghij")); 883 test(S("abcdefghij"), 1, SV("12345678901234567890"), 1, 9, S("a234567890bcdefghij")); 884 test(S("abcdefghij"), 1, SV("12345678901234567890"), 1, 18, S("a234567890123456789bcdefghij")); 885 test(S("abcdefghij"), 1, SV("12345678901234567890"), 1, 19, S("a2345678901234567890bcdefghij")); 886 test(S("abcdefghij"), 1, SV("12345678901234567890"), 1, 20, S("a2345678901234567890bcdefghij")); 887 test(S("abcdefghij"), 1, SV("12345678901234567890"), 10, 0, S("abcdefghij")); 888 test(S("abcdefghij"), 1, SV("12345678901234567890"), 10, 1, S("a1bcdefghij")); 889 test(S("abcdefghij"), 1, SV("12345678901234567890"), 10, 5, S("a12345bcdefghij")); 890 test(S("abcdefghij"), 1, SV("12345678901234567890"), 10, 9, S("a123456789bcdefghij")); 891 test(S("abcdefghij"), 1, SV("12345678901234567890"), 10, 10, S("a1234567890bcdefghij")); 892 test(S("abcdefghij"), 1, SV("12345678901234567890"), 10, 11, S("a1234567890bcdefghij")); 893 test(S("abcdefghij"), 1, SV("12345678901234567890"), 19, 0, S("abcdefghij")); 894 test(S("abcdefghij"), 1, SV("12345678901234567890"), 19, 1, S("a0bcdefghij")); 895 test(S("abcdefghij"), 1, SV("12345678901234567890"), 19, 2, S("a0bcdefghij")); 896 test(S("abcdefghij"), 1, SV("12345678901234567890"), 20, 0, S("abcdefghij")); 897 test(S("abcdefghij"), 1, SV("12345678901234567890"), 20, 1, S("abcdefghij")); 898 test(S("abcdefghij"), 1, SV("12345678901234567890"), 21, 0, S("can't happen")); 899 test(S("abcdefghij"), 5, SV(""), 0, 0, S("abcdefghij")); 900 test(S("abcdefghij"), 5, SV(""), 0, 1, S("abcdefghij")); 901 test(S("abcdefghij"), 5, SV(""), 1, 0, S("can't happen")); 902 test(S("abcdefghij"), 5, SV("12345"), 0, 0, S("abcdefghij")); 903 test(S("abcdefghij"), 5, SV("12345"), 0, 1, S("abcde1fghij")); 904 test(S("abcdefghij"), 5, SV("12345"), 0, 2, S("abcde12fghij")); 905 test(S("abcdefghij"), 5, SV("12345"), 0, 4, S("abcde1234fghij")); 906 test(S("abcdefghij"), 5, SV("12345"), 0, 5, S("abcde12345fghij")); 907 test(S("abcdefghij"), 5, SV("12345"), 0, 6, S("abcde12345fghij")); 908 test(S("abcdefghij"), 5, SV("12345"), 1, 0, S("abcdefghij")); 909 } 910 911 template <class S, class SV> 912 void test15() 913 { 914 test(S("abcdefghij"), 5, SV("12345"), 1, 1, S("abcde2fghij")); 915 test(S("abcdefghij"), 5, SV("12345"), 1, 2, S("abcde23fghij")); 916 test(S("abcdefghij"), 5, SV("12345"), 1, 3, S("abcde234fghij")); 917 test(S("abcdefghij"), 5, SV("12345"), 1, 4, S("abcde2345fghij")); 918 test(S("abcdefghij"), 5, SV("12345"), 1, 5, S("abcde2345fghij")); 919 test(S("abcdefghij"), 5, SV("12345"), 2, 0, S("abcdefghij")); 920 test(S("abcdefghij"), 5, SV("12345"), 2, 1, S("abcde3fghij")); 921 test(S("abcdefghij"), 5, SV("12345"), 2, 2, S("abcde34fghij")); 922 test(S("abcdefghij"), 5, SV("12345"), 2, 3, S("abcde345fghij")); 923 test(S("abcdefghij"), 5, SV("12345"), 2, 4, S("abcde345fghij")); 924 test(S("abcdefghij"), 5, SV("12345"), 4, 0, S("abcdefghij")); 925 test(S("abcdefghij"), 5, SV("12345"), 4, 1, S("abcde5fghij")); 926 test(S("abcdefghij"), 5, SV("12345"), 4, 2, S("abcde5fghij")); 927 test(S("abcdefghij"), 5, SV("12345"), 5, 0, S("abcdefghij")); 928 test(S("abcdefghij"), 5, SV("12345"), 5, 1, S("abcdefghij")); 929 test(S("abcdefghij"), 5, SV("12345"), 6, 0, S("can't happen")); 930 test(S("abcdefghij"), 5, SV("1234567890"), 0, 0, S("abcdefghij")); 931 test(S("abcdefghij"), 5, SV("1234567890"), 0, 1, S("abcde1fghij")); 932 test(S("abcdefghij"), 5, SV("1234567890"), 0, 5, S("abcde12345fghij")); 933 test(S("abcdefghij"), 5, SV("1234567890"), 0, 9, S("abcde123456789fghij")); 934 test(S("abcdefghij"), 5, SV("1234567890"), 0, 10, S("abcde1234567890fghij")); 935 test(S("abcdefghij"), 5, SV("1234567890"), 0, 11, S("abcde1234567890fghij")); 936 test(S("abcdefghij"), 5, SV("1234567890"), 1, 0, S("abcdefghij")); 937 test(S("abcdefghij"), 5, SV("1234567890"), 1, 1, S("abcde2fghij")); 938 test(S("abcdefghij"), 5, SV("1234567890"), 1, 4, S("abcde2345fghij")); 939 test(S("abcdefghij"), 5, SV("1234567890"), 1, 8, S("abcde23456789fghij")); 940 test(S("abcdefghij"), 5, SV("1234567890"), 1, 9, S("abcde234567890fghij")); 941 test(S("abcdefghij"), 5, SV("1234567890"), 1, 10, S("abcde234567890fghij")); 942 test(S("abcdefghij"), 5, SV("1234567890"), 5, 0, S("abcdefghij")); 943 test(S("abcdefghij"), 5, SV("1234567890"), 5, 1, S("abcde6fghij")); 944 test(S("abcdefghij"), 5, SV("1234567890"), 5, 2, S("abcde67fghij")); 945 test(S("abcdefghij"), 5, SV("1234567890"), 5, 4, S("abcde6789fghij")); 946 test(S("abcdefghij"), 5, SV("1234567890"), 5, 5, S("abcde67890fghij")); 947 test(S("abcdefghij"), 5, SV("1234567890"), 5, 6, S("abcde67890fghij")); 948 test(S("abcdefghij"), 5, SV("1234567890"), 9, 0, S("abcdefghij")); 949 test(S("abcdefghij"), 5, SV("1234567890"), 9, 1, S("abcde0fghij")); 950 test(S("abcdefghij"), 5, SV("1234567890"), 9, 2, S("abcde0fghij")); 951 test(S("abcdefghij"), 5, SV("1234567890"), 10, 0, S("abcdefghij")); 952 test(S("abcdefghij"), 5, SV("1234567890"), 10, 1, S("abcdefghij")); 953 test(S("abcdefghij"), 5, SV("1234567890"), 11, 0, S("can't happen")); 954 test(S("abcdefghij"), 5, SV("12345678901234567890"), 0, 0, S("abcdefghij")); 955 test(S("abcdefghij"), 5, SV("12345678901234567890"), 0, 1, S("abcde1fghij")); 956 test(S("abcdefghij"), 5, SV("12345678901234567890"), 0, 10, S("abcde1234567890fghij")); 957 test(S("abcdefghij"), 5, SV("12345678901234567890"), 0, 19, S("abcde1234567890123456789fghij")); 958 test(S("abcdefghij"), 5, SV("12345678901234567890"), 0, 20, S("abcde12345678901234567890fghij")); 959 test(S("abcdefghij"), 5, SV("12345678901234567890"), 0, 21, S("abcde12345678901234567890fghij")); 960 test(S("abcdefghij"), 5, SV("12345678901234567890"), 1, 0, S("abcdefghij")); 961 test(S("abcdefghij"), 5, SV("12345678901234567890"), 1, 1, S("abcde2fghij")); 962 test(S("abcdefghij"), 5, SV("12345678901234567890"), 1, 9, S("abcde234567890fghij")); 963 test(S("abcdefghij"), 5, SV("12345678901234567890"), 1, 18, S("abcde234567890123456789fghij")); 964 } 965 966 template <class S, class SV> 967 void test16() 968 { 969 test(S("abcdefghij"), 5, SV("12345678901234567890"), 1, 19, S("abcde2345678901234567890fghij")); 970 test(S("abcdefghij"), 5, SV("12345678901234567890"), 1, 20, S("abcde2345678901234567890fghij")); 971 test(S("abcdefghij"), 5, SV("12345678901234567890"), 10, 0, S("abcdefghij")); 972 test(S("abcdefghij"), 5, SV("12345678901234567890"), 10, 1, S("abcde1fghij")); 973 test(S("abcdefghij"), 5, SV("12345678901234567890"), 10, 5, S("abcde12345fghij")); 974 test(S("abcdefghij"), 5, SV("12345678901234567890"), 10, 9, S("abcde123456789fghij")); 975 test(S("abcdefghij"), 5, SV("12345678901234567890"), 10, 10, S("abcde1234567890fghij")); 976 test(S("abcdefghij"), 5, SV("12345678901234567890"), 10, 11, S("abcde1234567890fghij")); 977 test(S("abcdefghij"), 5, SV("12345678901234567890"), 19, 0, S("abcdefghij")); 978 test(S("abcdefghij"), 5, SV("12345678901234567890"), 19, 1, S("abcde0fghij")); 979 test(S("abcdefghij"), 5, SV("12345678901234567890"), 19, 2, S("abcde0fghij")); 980 test(S("abcdefghij"), 5, SV("12345678901234567890"), 20, 0, S("abcdefghij")); 981 test(S("abcdefghij"), 5, SV("12345678901234567890"), 20, 1, S("abcdefghij")); 982 test(S("abcdefghij"), 5, SV("12345678901234567890"), 21, 0, S("can't happen")); 983 test(S("abcdefghij"), 9, SV(""), 0, 0, S("abcdefghij")); 984 test(S("abcdefghij"), 9, SV(""), 0, 1, S("abcdefghij")); 985 test(S("abcdefghij"), 9, SV(""), 1, 0, S("can't happen")); 986 test(S("abcdefghij"), 9, SV("12345"), 0, 0, S("abcdefghij")); 987 test(S("abcdefghij"), 9, SV("12345"), 0, 1, S("abcdefghi1j")); 988 test(S("abcdefghij"), 9, SV("12345"), 0, 2, S("abcdefghi12j")); 989 test(S("abcdefghij"), 9, SV("12345"), 0, 4, S("abcdefghi1234j")); 990 test(S("abcdefghij"), 9, SV("12345"), 0, 5, S("abcdefghi12345j")); 991 test(S("abcdefghij"), 9, SV("12345"), 0, 6, S("abcdefghi12345j")); 992 test(S("abcdefghij"), 9, SV("12345"), 1, 0, S("abcdefghij")); 993 test(S("abcdefghij"), 9, SV("12345"), 1, 1, S("abcdefghi2j")); 994 test(S("abcdefghij"), 9, SV("12345"), 1, 2, S("abcdefghi23j")); 995 test(S("abcdefghij"), 9, SV("12345"), 1, 3, S("abcdefghi234j")); 996 test(S("abcdefghij"), 9, SV("12345"), 1, 4, S("abcdefghi2345j")); 997 test(S("abcdefghij"), 9, SV("12345"), 1, 5, S("abcdefghi2345j")); 998 test(S("abcdefghij"), 9, SV("12345"), 2, 0, S("abcdefghij")); 999 test(S("abcdefghij"), 9, SV("12345"), 2, 1, S("abcdefghi3j")); 1000 test(S("abcdefghij"), 9, SV("12345"), 2, 2, S("abcdefghi34j")); 1001 test(S("abcdefghij"), 9, SV("12345"), 2, 3, S("abcdefghi345j")); 1002 test(S("abcdefghij"), 9, SV("12345"), 2, 4, S("abcdefghi345j")); 1003 test(S("abcdefghij"), 9, SV("12345"), 4, 0, S("abcdefghij")); 1004 test(S("abcdefghij"), 9, SV("12345"), 4, 1, S("abcdefghi5j")); 1005 test(S("abcdefghij"), 9, SV("12345"), 4, 2, S("abcdefghi5j")); 1006 test(S("abcdefghij"), 9, SV("12345"), 5, 0, S("abcdefghij")); 1007 test(S("abcdefghij"), 9, SV("12345"), 5, 1, S("abcdefghij")); 1008 test(S("abcdefghij"), 9, SV("12345"), 6, 0, S("can't happen")); 1009 test(S("abcdefghij"), 9, SV("1234567890"), 0, 0, S("abcdefghij")); 1010 test(S("abcdefghij"), 9, SV("1234567890"), 0, 1, S("abcdefghi1j")); 1011 test(S("abcdefghij"), 9, SV("1234567890"), 0, 5, S("abcdefghi12345j")); 1012 test(S("abcdefghij"), 9, SV("1234567890"), 0, 9, S("abcdefghi123456789j")); 1013 test(S("abcdefghij"), 9, SV("1234567890"), 0, 10, S("abcdefghi1234567890j")); 1014 test(S("abcdefghij"), 9, SV("1234567890"), 0, 11, S("abcdefghi1234567890j")); 1015 test(S("abcdefghij"), 9, SV("1234567890"), 1, 0, S("abcdefghij")); 1016 test(S("abcdefghij"), 9, SV("1234567890"), 1, 1, S("abcdefghi2j")); 1017 test(S("abcdefghij"), 9, SV("1234567890"), 1, 4, S("abcdefghi2345j")); 1018 test(S("abcdefghij"), 9, SV("1234567890"), 1, 8, S("abcdefghi23456789j")); 1019 } 1020 1021 template <class S, class SV> 1022 void test17() 1023 { 1024 test(S("abcdefghij"), 9, SV("1234567890"), 1, 9, S("abcdefghi234567890j")); 1025 test(S("abcdefghij"), 9, SV("1234567890"), 1, 10, S("abcdefghi234567890j")); 1026 test(S("abcdefghij"), 9, SV("1234567890"), 5, 0, S("abcdefghij")); 1027 test(S("abcdefghij"), 9, SV("1234567890"), 5, 1, S("abcdefghi6j")); 1028 test(S("abcdefghij"), 9, SV("1234567890"), 5, 2, S("abcdefghi67j")); 1029 test(S("abcdefghij"), 9, SV("1234567890"), 5, 4, S("abcdefghi6789j")); 1030 test(S("abcdefghij"), 9, SV("1234567890"), 5, 5, S("abcdefghi67890j")); 1031 test(S("abcdefghij"), 9, SV("1234567890"), 5, 6, S("abcdefghi67890j")); 1032 test(S("abcdefghij"), 9, SV("1234567890"), 9, 0, S("abcdefghij")); 1033 test(S("abcdefghij"), 9, SV("1234567890"), 9, 1, S("abcdefghi0j")); 1034 test(S("abcdefghij"), 9, SV("1234567890"), 9, 2, S("abcdefghi0j")); 1035 test(S("abcdefghij"), 9, SV("1234567890"), 10, 0, S("abcdefghij")); 1036 test(S("abcdefghij"), 9, SV("1234567890"), 10, 1, S("abcdefghij")); 1037 test(S("abcdefghij"), 9, SV("1234567890"), 11, 0, S("can't happen")); 1038 test(S("abcdefghij"), 9, SV("12345678901234567890"), 0, 0, S("abcdefghij")); 1039 test(S("abcdefghij"), 9, SV("12345678901234567890"), 0, 1, S("abcdefghi1j")); 1040 test(S("abcdefghij"), 9, SV("12345678901234567890"), 0, 10, S("abcdefghi1234567890j")); 1041 test(S("abcdefghij"), 9, SV("12345678901234567890"), 0, 19, S("abcdefghi1234567890123456789j")); 1042 test(S("abcdefghij"), 9, SV("12345678901234567890"), 0, 20, S("abcdefghi12345678901234567890j")); 1043 test(S("abcdefghij"), 9, SV("12345678901234567890"), 0, 21, S("abcdefghi12345678901234567890j")); 1044 test(S("abcdefghij"), 9, SV("12345678901234567890"), 1, 0, S("abcdefghij")); 1045 test(S("abcdefghij"), 9, SV("12345678901234567890"), 1, 1, S("abcdefghi2j")); 1046 test(S("abcdefghij"), 9, SV("12345678901234567890"), 1, 9, S("abcdefghi234567890j")); 1047 test(S("abcdefghij"), 9, SV("12345678901234567890"), 1, 18, S("abcdefghi234567890123456789j")); 1048 test(S("abcdefghij"), 9, SV("12345678901234567890"), 1, 19, S("abcdefghi2345678901234567890j")); 1049 test(S("abcdefghij"), 9, SV("12345678901234567890"), 1, 20, S("abcdefghi2345678901234567890j")); 1050 test(S("abcdefghij"), 9, SV("12345678901234567890"), 10, 0, S("abcdefghij")); 1051 test(S("abcdefghij"), 9, SV("12345678901234567890"), 10, 1, S("abcdefghi1j")); 1052 test(S("abcdefghij"), 9, SV("12345678901234567890"), 10, 5, S("abcdefghi12345j")); 1053 test(S("abcdefghij"), 9, SV("12345678901234567890"), 10, 9, S("abcdefghi123456789j")); 1054 test(S("abcdefghij"), 9, SV("12345678901234567890"), 10, 10, S("abcdefghi1234567890j")); 1055 test(S("abcdefghij"), 9, SV("12345678901234567890"), 10, 11, S("abcdefghi1234567890j")); 1056 test(S("abcdefghij"), 9, SV("12345678901234567890"), 19, 0, S("abcdefghij")); 1057 test(S("abcdefghij"), 9, SV("12345678901234567890"), 19, 1, S("abcdefghi0j")); 1058 test(S("abcdefghij"), 9, SV("12345678901234567890"), 19, 2, S("abcdefghi0j")); 1059 test(S("abcdefghij"), 9, SV("12345678901234567890"), 20, 0, S("abcdefghij")); 1060 test(S("abcdefghij"), 9, SV("12345678901234567890"), 20, 1, S("abcdefghij")); 1061 test(S("abcdefghij"), 9, SV("12345678901234567890"), 21, 0, S("can't happen")); 1062 test(S("abcdefghij"), 10, SV(""), 0, 0, S("abcdefghij")); 1063 test(S("abcdefghij"), 10, SV(""), 0, 1, S("abcdefghij")); 1064 test(S("abcdefghij"), 10, SV(""), 1, 0, S("can't happen")); 1065 test(S("abcdefghij"), 10, SV("12345"), 0, 0, S("abcdefghij")); 1066 test(S("abcdefghij"), 10, SV("12345"), 0, 1, S("abcdefghij1")); 1067 test(S("abcdefghij"), 10, SV("12345"), 0, 2, S("abcdefghij12")); 1068 test(S("abcdefghij"), 10, SV("12345"), 0, 4, S("abcdefghij1234")); 1069 test(S("abcdefghij"), 10, SV("12345"), 0, 5, S("abcdefghij12345")); 1070 test(S("abcdefghij"), 10, SV("12345"), 0, 6, S("abcdefghij12345")); 1071 test(S("abcdefghij"), 10, SV("12345"), 1, 0, S("abcdefghij")); 1072 test(S("abcdefghij"), 10, SV("12345"), 1, 1, S("abcdefghij2")); 1073 test(S("abcdefghij"), 10, SV("12345"), 1, 2, S("abcdefghij23")); 1074 } 1075 1076 template <class S, class SV> 1077 void test18() 1078 { 1079 test(S("abcdefghij"), 10, SV("12345"), 1, 3, S("abcdefghij234")); 1080 test(S("abcdefghij"), 10, SV("12345"), 1, 4, S("abcdefghij2345")); 1081 test(S("abcdefghij"), 10, SV("12345"), 1, 5, S("abcdefghij2345")); 1082 test(S("abcdefghij"), 10, SV("12345"), 2, 0, S("abcdefghij")); 1083 test(S("abcdefghij"), 10, SV("12345"), 2, 1, S("abcdefghij3")); 1084 test(S("abcdefghij"), 10, SV("12345"), 2, 2, S("abcdefghij34")); 1085 test(S("abcdefghij"), 10, SV("12345"), 2, 3, S("abcdefghij345")); 1086 test(S("abcdefghij"), 10, SV("12345"), 2, 4, S("abcdefghij345")); 1087 test(S("abcdefghij"), 10, SV("12345"), 4, 0, S("abcdefghij")); 1088 test(S("abcdefghij"), 10, SV("12345"), 4, 1, S("abcdefghij5")); 1089 test(S("abcdefghij"), 10, SV("12345"), 4, 2, S("abcdefghij5")); 1090 test(S("abcdefghij"), 10, SV("12345"), 5, 0, S("abcdefghij")); 1091 test(S("abcdefghij"), 10, SV("12345"), 5, 1, S("abcdefghij")); 1092 test(S("abcdefghij"), 10, SV("12345"), 6, 0, S("can't happen")); 1093 test(S("abcdefghij"), 10, SV("1234567890"), 0, 0, S("abcdefghij")); 1094 test(S("abcdefghij"), 10, SV("1234567890"), 0, 1, S("abcdefghij1")); 1095 test(S("abcdefghij"), 10, SV("1234567890"), 0, 5, S("abcdefghij12345")); 1096 test(S("abcdefghij"), 10, SV("1234567890"), 0, 9, S("abcdefghij123456789")); 1097 test(S("abcdefghij"), 10, SV("1234567890"), 0, 10, S("abcdefghij1234567890")); 1098 test(S("abcdefghij"), 10, SV("1234567890"), 0, 11, S("abcdefghij1234567890")); 1099 test(S("abcdefghij"), 10, SV("1234567890"), 1, 0, S("abcdefghij")); 1100 test(S("abcdefghij"), 10, SV("1234567890"), 1, 1, S("abcdefghij2")); 1101 test(S("abcdefghij"), 10, SV("1234567890"), 1, 4, S("abcdefghij2345")); 1102 test(S("abcdefghij"), 10, SV("1234567890"), 1, 8, S("abcdefghij23456789")); 1103 test(S("abcdefghij"), 10, SV("1234567890"), 1, 9, S("abcdefghij234567890")); 1104 test(S("abcdefghij"), 10, SV("1234567890"), 1, 10, S("abcdefghij234567890")); 1105 test(S("abcdefghij"), 10, SV("1234567890"), 5, 0, S("abcdefghij")); 1106 test(S("abcdefghij"), 10, SV("1234567890"), 5, 1, S("abcdefghij6")); 1107 test(S("abcdefghij"), 10, SV("1234567890"), 5, 2, S("abcdefghij67")); 1108 test(S("abcdefghij"), 10, SV("1234567890"), 5, 4, S("abcdefghij6789")); 1109 test(S("abcdefghij"), 10, SV("1234567890"), 5, 5, S("abcdefghij67890")); 1110 test(S("abcdefghij"), 10, SV("1234567890"), 5, 6, S("abcdefghij67890")); 1111 test(S("abcdefghij"), 10, SV("1234567890"), 9, 0, S("abcdefghij")); 1112 test(S("abcdefghij"), 10, SV("1234567890"), 9, 1, S("abcdefghij0")); 1113 test(S("abcdefghij"), 10, SV("1234567890"), 9, 2, S("abcdefghij0")); 1114 test(S("abcdefghij"), 10, SV("1234567890"), 10, 0, S("abcdefghij")); 1115 test(S("abcdefghij"), 10, SV("1234567890"), 10, 1, S("abcdefghij")); 1116 test(S("abcdefghij"), 10, SV("1234567890"), 11, 0, S("can't happen")); 1117 test(S("abcdefghij"), 10, SV("12345678901234567890"), 0, 0, S("abcdefghij")); 1118 test(S("abcdefghij"), 10, SV("12345678901234567890"), 0, 1, S("abcdefghij1")); 1119 test(S("abcdefghij"), 10, SV("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); 1120 test(S("abcdefghij"), 10, SV("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); 1121 test(S("abcdefghij"), 10, SV("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); 1122 test(S("abcdefghij"), 10, SV("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); 1123 test(S("abcdefghij"), 10, SV("12345678901234567890"), 1, 0, S("abcdefghij")); 1124 test(S("abcdefghij"), 10, SV("12345678901234567890"), 1, 1, S("abcdefghij2")); 1125 test(S("abcdefghij"), 10, SV("12345678901234567890"), 1, 9, S("abcdefghij234567890")); 1126 test(S("abcdefghij"), 10, SV("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); 1127 test(S("abcdefghij"), 10, SV("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); 1128 test(S("abcdefghij"), 10, SV("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); 1129 } 1130 1131 template <class S, class SV> 1132 void test19() 1133 { 1134 test(S("abcdefghij"), 10, SV("12345678901234567890"), 10, 0, S("abcdefghij")); 1135 test(S("abcdefghij"), 10, SV("12345678901234567890"), 10, 1, S("abcdefghij1")); 1136 test(S("abcdefghij"), 10, SV("12345678901234567890"), 10, 5, S("abcdefghij12345")); 1137 test(S("abcdefghij"), 10, SV("12345678901234567890"), 10, 9, S("abcdefghij123456789")); 1138 test(S("abcdefghij"), 10, SV("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); 1139 test(S("abcdefghij"), 10, SV("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); 1140 test(S("abcdefghij"), 10, SV("12345678901234567890"), 19, 0, S("abcdefghij")); 1141 test(S("abcdefghij"), 10, SV("12345678901234567890"), 19, 1, S("abcdefghij0")); 1142 test(S("abcdefghij"), 10, SV("12345678901234567890"), 19, 2, S("abcdefghij0")); 1143 test(S("abcdefghij"), 10, SV("12345678901234567890"), 20, 0, S("abcdefghij")); 1144 test(S("abcdefghij"), 10, SV("12345678901234567890"), 20, 1, S("abcdefghij")); 1145 test(S("abcdefghij"), 10, SV("12345678901234567890"), 21, 0, S("can't happen")); 1146 test(S("abcdefghij"), 11, SV(""), 0, 0, S("can't happen")); 1147 test(S("abcdefghij"), 11, SV(""), 0, 1, S("can't happen")); 1148 test(S("abcdefghij"), 11, SV(""), 1, 0, S("can't happen")); 1149 test(S("abcdefghij"), 11, SV("12345"), 0, 0, S("can't happen")); 1150 test(S("abcdefghij"), 11, SV("12345"), 0, 1, S("can't happen")); 1151 test(S("abcdefghij"), 11, SV("12345"), 0, 2, S("can't happen")); 1152 test(S("abcdefghij"), 11, SV("12345"), 0, 4, S("can't happen")); 1153 test(S("abcdefghij"), 11, SV("12345"), 0, 5, S("can't happen")); 1154 test(S("abcdefghij"), 11, SV("12345"), 0, 6, S("can't happen")); 1155 test(S("abcdefghij"), 11, SV("12345"), 1, 0, S("can't happen")); 1156 test(S("abcdefghij"), 11, SV("12345"), 1, 1, S("can't happen")); 1157 test(S("abcdefghij"), 11, SV("12345"), 1, 2, S("can't happen")); 1158 test(S("abcdefghij"), 11, SV("12345"), 1, 3, S("can't happen")); 1159 test(S("abcdefghij"), 11, SV("12345"), 1, 4, S("can't happen")); 1160 test(S("abcdefghij"), 11, SV("12345"), 1, 5, S("can't happen")); 1161 test(S("abcdefghij"), 11, SV("12345"), 2, 0, S("can't happen")); 1162 test(S("abcdefghij"), 11, SV("12345"), 2, 1, S("can't happen")); 1163 test(S("abcdefghij"), 11, SV("12345"), 2, 2, S("can't happen")); 1164 test(S("abcdefghij"), 11, SV("12345"), 2, 3, S("can't happen")); 1165 test(S("abcdefghij"), 11, SV("12345"), 2, 4, S("can't happen")); 1166 test(S("abcdefghij"), 11, SV("12345"), 4, 0, S("can't happen")); 1167 test(S("abcdefghij"), 11, SV("12345"), 4, 1, S("can't happen")); 1168 test(S("abcdefghij"), 11, SV("12345"), 4, 2, S("can't happen")); 1169 test(S("abcdefghij"), 11, SV("12345"), 5, 0, S("can't happen")); 1170 test(S("abcdefghij"), 11, SV("12345"), 5, 1, S("can't happen")); 1171 test(S("abcdefghij"), 11, SV("12345"), 6, 0, S("can't happen")); 1172 test(S("abcdefghij"), 11, SV("1234567890"), 0, 0, S("can't happen")); 1173 test(S("abcdefghij"), 11, SV("1234567890"), 0, 1, S("can't happen")); 1174 test(S("abcdefghij"), 11, SV("1234567890"), 0, 5, S("can't happen")); 1175 test(S("abcdefghij"), 11, SV("1234567890"), 0, 9, S("can't happen")); 1176 test(S("abcdefghij"), 11, SV("1234567890"), 0, 10, S("can't happen")); 1177 test(S("abcdefghij"), 11, SV("1234567890"), 0, 11, S("can't happen")); 1178 test(S("abcdefghij"), 11, SV("1234567890"), 1, 0, S("can't happen")); 1179 test(S("abcdefghij"), 11, SV("1234567890"), 1, 1, S("can't happen")); 1180 test(S("abcdefghij"), 11, SV("1234567890"), 1, 4, S("can't happen")); 1181 test(S("abcdefghij"), 11, SV("1234567890"), 1, 8, S("can't happen")); 1182 test(S("abcdefghij"), 11, SV("1234567890"), 1, 9, S("can't happen")); 1183 test(S("abcdefghij"), 11, SV("1234567890"), 1, 10, S("can't happen")); 1184 } 1185 1186 template <class S, class SV> 1187 void test20() 1188 { 1189 test(S("abcdefghij"), 11, SV("1234567890"), 5, 0, S("can't happen")); 1190 test(S("abcdefghij"), 11, SV("1234567890"), 5, 1, S("can't happen")); 1191 test(S("abcdefghij"), 11, SV("1234567890"), 5, 2, S("can't happen")); 1192 test(S("abcdefghij"), 11, SV("1234567890"), 5, 4, S("can't happen")); 1193 test(S("abcdefghij"), 11, SV("1234567890"), 5, 5, S("can't happen")); 1194 test(S("abcdefghij"), 11, SV("1234567890"), 5, 6, S("can't happen")); 1195 test(S("abcdefghij"), 11, SV("1234567890"), 9, 0, S("can't happen")); 1196 test(S("abcdefghij"), 11, SV("1234567890"), 9, 1, S("can't happen")); 1197 test(S("abcdefghij"), 11, SV("1234567890"), 9, 2, S("can't happen")); 1198 test(S("abcdefghij"), 11, SV("1234567890"), 10, 0, S("can't happen")); 1199 test(S("abcdefghij"), 11, SV("1234567890"), 10, 1, S("can't happen")); 1200 test(S("abcdefghij"), 11, SV("1234567890"), 11, 0, S("can't happen")); 1201 test(S("abcdefghij"), 11, SV("12345678901234567890"), 0, 0, S("can't happen")); 1202 test(S("abcdefghij"), 11, SV("12345678901234567890"), 0, 1, S("can't happen")); 1203 test(S("abcdefghij"), 11, SV("12345678901234567890"), 0, 10, S("can't happen")); 1204 test(S("abcdefghij"), 11, SV("12345678901234567890"), 0, 19, S("can't happen")); 1205 test(S("abcdefghij"), 11, SV("12345678901234567890"), 0, 20, S("can't happen")); 1206 test(S("abcdefghij"), 11, SV("12345678901234567890"), 0, 21, S("can't happen")); 1207 test(S("abcdefghij"), 11, SV("12345678901234567890"), 1, 0, S("can't happen")); 1208 test(S("abcdefghij"), 11, SV("12345678901234567890"), 1, 1, S("can't happen")); 1209 test(S("abcdefghij"), 11, SV("12345678901234567890"), 1, 9, S("can't happen")); 1210 test(S("abcdefghij"), 11, SV("12345678901234567890"), 1, 18, S("can't happen")); 1211 test(S("abcdefghij"), 11, SV("12345678901234567890"), 1, 19, S("can't happen")); 1212 test(S("abcdefghij"), 11, SV("12345678901234567890"), 1, 20, S("can't happen")); 1213 test(S("abcdefghij"), 11, SV("12345678901234567890"), 10, 0, S("can't happen")); 1214 test(S("abcdefghij"), 11, SV("12345678901234567890"), 10, 1, S("can't happen")); 1215 test(S("abcdefghij"), 11, SV("12345678901234567890"), 10, 5, S("can't happen")); 1216 test(S("abcdefghij"), 11, SV("12345678901234567890"), 10, 9, S("can't happen")); 1217 test(S("abcdefghij"), 11, SV("12345678901234567890"), 10, 10, S("can't happen")); 1218 test(S("abcdefghij"), 11, SV("12345678901234567890"), 10, 11, S("can't happen")); 1219 test(S("abcdefghij"), 11, SV("12345678901234567890"), 19, 0, S("can't happen")); 1220 test(S("abcdefghij"), 11, SV("12345678901234567890"), 19, 1, S("can't happen")); 1221 test(S("abcdefghij"), 11, SV("12345678901234567890"), 19, 2, S("can't happen")); 1222 test(S("abcdefghij"), 11, SV("12345678901234567890"), 20, 0, S("can't happen")); 1223 test(S("abcdefghij"), 11, SV("12345678901234567890"), 20, 1, S("can't happen")); 1224 test(S("abcdefghij"), 11, SV("12345678901234567890"), 21, 0, S("can't happen")); 1225 test(S("abcdefghijklmnopqrst"), 0, SV(""), 0, 0, S("abcdefghijklmnopqrst")); 1226 test(S("abcdefghijklmnopqrst"), 0, SV(""), 0, 1, S("abcdefghijklmnopqrst")); 1227 test(S("abcdefghijklmnopqrst"), 0, SV(""), 1, 0, S("can't happen")); 1228 test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); 1229 test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 0, 1, S("1abcdefghijklmnopqrst")); 1230 test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 0, 2, S("12abcdefghijklmnopqrst")); 1231 test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 0, 4, S("1234abcdefghijklmnopqrst")); 1232 test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 0, 5, S("12345abcdefghijklmnopqrst")); 1233 test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 0, 6, S("12345abcdefghijklmnopqrst")); 1234 test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); 1235 test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 1, 1, S("2abcdefghijklmnopqrst")); 1236 test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 1, 2, S("23abcdefghijklmnopqrst")); 1237 test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 1, 3, S("234abcdefghijklmnopqrst")); 1238 test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 1, 4, S("2345abcdefghijklmnopqrst")); 1239 } 1240 1241 template <class S, class SV> 1242 void test21() 1243 { 1244 test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 1, 5, S("2345abcdefghijklmnopqrst")); 1245 test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); 1246 test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 2, 1, S("3abcdefghijklmnopqrst")); 1247 test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 2, 2, S("34abcdefghijklmnopqrst")); 1248 test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 2, 3, S("345abcdefghijklmnopqrst")); 1249 test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 2, 4, S("345abcdefghijklmnopqrst")); 1250 test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); 1251 test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 4, 1, S("5abcdefghijklmnopqrst")); 1252 test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 4, 2, S("5abcdefghijklmnopqrst")); 1253 test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); 1254 test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); 1255 test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 6, 0, S("can't happen")); 1256 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); 1257 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 0, 1, S("1abcdefghijklmnopqrst")); 1258 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 0, 5, S("12345abcdefghijklmnopqrst")); 1259 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 0, 9, S("123456789abcdefghijklmnopqrst")); 1260 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 0, 10, S("1234567890abcdefghijklmnopqrst")); 1261 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 0, 11, S("1234567890abcdefghijklmnopqrst")); 1262 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); 1263 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 1, 1, S("2abcdefghijklmnopqrst")); 1264 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 1, 4, S("2345abcdefghijklmnopqrst")); 1265 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 1, 8, S("23456789abcdefghijklmnopqrst")); 1266 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 1, 9, S("234567890abcdefghijklmnopqrst")); 1267 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 1, 10, S("234567890abcdefghijklmnopqrst")); 1268 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); 1269 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 5, 1, S("6abcdefghijklmnopqrst")); 1270 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 5, 2, S("67abcdefghijklmnopqrst")); 1271 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 5, 4, S("6789abcdefghijklmnopqrst")); 1272 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 5, 5, S("67890abcdefghijklmnopqrst")); 1273 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 5, 6, S("67890abcdefghijklmnopqrst")); 1274 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); 1275 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 9, 1, S("0abcdefghijklmnopqrst")); 1276 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 9, 2, S("0abcdefghijklmnopqrst")); 1277 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); 1278 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); 1279 test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 11, 0, S("can't happen")); 1280 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); 1281 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 0, 1, S("1abcdefghijklmnopqrst")); 1282 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 0, 10, S("1234567890abcdefghijklmnopqrst")); 1283 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 0, 19, S("1234567890123456789abcdefghijklmnopqrst")); 1284 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 0, 20, S("12345678901234567890abcdefghijklmnopqrst")); 1285 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 0, 21, S("12345678901234567890abcdefghijklmnopqrst")); 1286 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); 1287 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 1, 1, S("2abcdefghijklmnopqrst")); 1288 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 1, 9, S("234567890abcdefghijklmnopqrst")); 1289 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 1, 18, S("234567890123456789abcdefghijklmnopqrst")); 1290 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 1, 19, S("2345678901234567890abcdefghijklmnopqrst")); 1291 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 1, 20, S("2345678901234567890abcdefghijklmnopqrst")); 1292 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); 1293 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 10, 1, S("1abcdefghijklmnopqrst")); 1294 } 1295 1296 template <class S, class SV> 1297 void test22() 1298 { 1299 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 10, 5, S("12345abcdefghijklmnopqrst")); 1300 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 10, 9, S("123456789abcdefghijklmnopqrst")); 1301 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 10, 10, S("1234567890abcdefghijklmnopqrst")); 1302 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 10, 11, S("1234567890abcdefghijklmnopqrst")); 1303 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); 1304 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 19, 1, S("0abcdefghijklmnopqrst")); 1305 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 19, 2, S("0abcdefghijklmnopqrst")); 1306 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); 1307 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); 1308 test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 21, 0, S("can't happen")); 1309 test(S("abcdefghijklmnopqrst"), 1, SV(""), 0, 0, S("abcdefghijklmnopqrst")); 1310 test(S("abcdefghijklmnopqrst"), 1, SV(""), 0, 1, S("abcdefghijklmnopqrst")); 1311 test(S("abcdefghijklmnopqrst"), 1, SV(""), 1, 0, S("can't happen")); 1312 test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); 1313 test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 0, 1, S("a1bcdefghijklmnopqrst")); 1314 test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 0, 2, S("a12bcdefghijklmnopqrst")); 1315 test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 0, 4, S("a1234bcdefghijklmnopqrst")); 1316 test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 0, 5, S("a12345bcdefghijklmnopqrst")); 1317 test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 0, 6, S("a12345bcdefghijklmnopqrst")); 1318 test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); 1319 test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 1, 1, S("a2bcdefghijklmnopqrst")); 1320 test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 1, 2, S("a23bcdefghijklmnopqrst")); 1321 test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 1, 3, S("a234bcdefghijklmnopqrst")); 1322 test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 1, 4, S("a2345bcdefghijklmnopqrst")); 1323 test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 1, 5, S("a2345bcdefghijklmnopqrst")); 1324 test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); 1325 test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 2, 1, S("a3bcdefghijklmnopqrst")); 1326 test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 2, 2, S("a34bcdefghijklmnopqrst")); 1327 test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 2, 3, S("a345bcdefghijklmnopqrst")); 1328 test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 2, 4, S("a345bcdefghijklmnopqrst")); 1329 test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); 1330 test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 4, 1, S("a5bcdefghijklmnopqrst")); 1331 test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 4, 2, S("a5bcdefghijklmnopqrst")); 1332 test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); 1333 test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); 1334 test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 6, 0, S("can't happen")); 1335 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); 1336 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 0, 1, S("a1bcdefghijklmnopqrst")); 1337 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 0, 5, S("a12345bcdefghijklmnopqrst")); 1338 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 0, 9, S("a123456789bcdefghijklmnopqrst")); 1339 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 0, 10, S("a1234567890bcdefghijklmnopqrst")); 1340 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 0, 11, S("a1234567890bcdefghijklmnopqrst")); 1341 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); 1342 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 1, 1, S("a2bcdefghijklmnopqrst")); 1343 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 1, 4, S("a2345bcdefghijklmnopqrst")); 1344 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 1, 8, S("a23456789bcdefghijklmnopqrst")); 1345 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 1, 9, S("a234567890bcdefghijklmnopqrst")); 1346 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 1, 10, S("a234567890bcdefghijklmnopqrst")); 1347 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); 1348 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 5, 1, S("a6bcdefghijklmnopqrst")); 1349 } 1350 1351 template <class S, class SV> 1352 void test23() 1353 { 1354 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 5, 2, S("a67bcdefghijklmnopqrst")); 1355 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 5, 4, S("a6789bcdefghijklmnopqrst")); 1356 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 5, 5, S("a67890bcdefghijklmnopqrst")); 1357 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 5, 6, S("a67890bcdefghijklmnopqrst")); 1358 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); 1359 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 9, 1, S("a0bcdefghijklmnopqrst")); 1360 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 9, 2, S("a0bcdefghijklmnopqrst")); 1361 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); 1362 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); 1363 test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 11, 0, S("can't happen")); 1364 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); 1365 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 0, 1, S("a1bcdefghijklmnopqrst")); 1366 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 0, 10, S("a1234567890bcdefghijklmnopqrst")); 1367 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 0, 19, S("a1234567890123456789bcdefghijklmnopqrst")); 1368 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 0, 20, S("a12345678901234567890bcdefghijklmnopqrst")); 1369 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 0, 21, S("a12345678901234567890bcdefghijklmnopqrst")); 1370 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); 1371 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 1, 1, S("a2bcdefghijklmnopqrst")); 1372 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 1, 9, S("a234567890bcdefghijklmnopqrst")); 1373 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 1, 18, S("a234567890123456789bcdefghijklmnopqrst")); 1374 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 1, 19, S("a2345678901234567890bcdefghijklmnopqrst")); 1375 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 1, 20, S("a2345678901234567890bcdefghijklmnopqrst")); 1376 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); 1377 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 10, 1, S("a1bcdefghijklmnopqrst")); 1378 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 10, 5, S("a12345bcdefghijklmnopqrst")); 1379 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 10, 9, S("a123456789bcdefghijklmnopqrst")); 1380 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 10, 10, S("a1234567890bcdefghijklmnopqrst")); 1381 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 10, 11, S("a1234567890bcdefghijklmnopqrst")); 1382 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); 1383 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 19, 1, S("a0bcdefghijklmnopqrst")); 1384 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 19, 2, S("a0bcdefghijklmnopqrst")); 1385 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); 1386 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); 1387 test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 21, 0, S("can't happen")); 1388 test(S("abcdefghijklmnopqrst"), 10, SV(""), 0, 0, S("abcdefghijklmnopqrst")); 1389 test(S("abcdefghijklmnopqrst"), 10, SV(""), 0, 1, S("abcdefghijklmnopqrst")); 1390 test(S("abcdefghijklmnopqrst"), 10, SV(""), 1, 0, S("can't happen")); 1391 test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); 1392 test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 0, 1, S("abcdefghij1klmnopqrst")); 1393 test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 0, 2, S("abcdefghij12klmnopqrst")); 1394 test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 0, 4, S("abcdefghij1234klmnopqrst")); 1395 test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 0, 5, S("abcdefghij12345klmnopqrst")); 1396 test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 0, 6, S("abcdefghij12345klmnopqrst")); 1397 test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); 1398 test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 1, 1, S("abcdefghij2klmnopqrst")); 1399 test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 1, 2, S("abcdefghij23klmnopqrst")); 1400 test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 1, 3, S("abcdefghij234klmnopqrst")); 1401 test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 1, 4, S("abcdefghij2345klmnopqrst")); 1402 test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 1, 5, S("abcdefghij2345klmnopqrst")); 1403 test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); 1404 } 1405 1406 template <class S, class SV> 1407 void test24() 1408 { 1409 test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 2, 1, S("abcdefghij3klmnopqrst")); 1410 test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 2, 2, S("abcdefghij34klmnopqrst")); 1411 test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 2, 3, S("abcdefghij345klmnopqrst")); 1412 test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 2, 4, S("abcdefghij345klmnopqrst")); 1413 test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); 1414 test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 4, 1, S("abcdefghij5klmnopqrst")); 1415 test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 4, 2, S("abcdefghij5klmnopqrst")); 1416 test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); 1417 test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); 1418 test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 6, 0, S("can't happen")); 1419 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); 1420 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 0, 1, S("abcdefghij1klmnopqrst")); 1421 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 0, 5, S("abcdefghij12345klmnopqrst")); 1422 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 0, 9, S("abcdefghij123456789klmnopqrst")); 1423 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 0, 10, S("abcdefghij1234567890klmnopqrst")); 1424 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 0, 11, S("abcdefghij1234567890klmnopqrst")); 1425 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); 1426 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 1, 1, S("abcdefghij2klmnopqrst")); 1427 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 1, 4, S("abcdefghij2345klmnopqrst")); 1428 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 1, 8, S("abcdefghij23456789klmnopqrst")); 1429 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 1, 9, S("abcdefghij234567890klmnopqrst")); 1430 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 1, 10, S("abcdefghij234567890klmnopqrst")); 1431 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); 1432 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 5, 1, S("abcdefghij6klmnopqrst")); 1433 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 5, 2, S("abcdefghij67klmnopqrst")); 1434 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 5, 4, S("abcdefghij6789klmnopqrst")); 1435 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 5, 5, S("abcdefghij67890klmnopqrst")); 1436 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 5, 6, S("abcdefghij67890klmnopqrst")); 1437 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); 1438 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 9, 1, S("abcdefghij0klmnopqrst")); 1439 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 9, 2, S("abcdefghij0klmnopqrst")); 1440 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); 1441 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); 1442 test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 11, 0, S("can't happen")); 1443 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); 1444 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 0, 1, S("abcdefghij1klmnopqrst")); 1445 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 0, 10, S("abcdefghij1234567890klmnopqrst")); 1446 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789klmnopqrst")); 1447 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890klmnopqrst")); 1448 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890klmnopqrst")); 1449 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); 1450 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 1, 1, S("abcdefghij2klmnopqrst")); 1451 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 1, 9, S("abcdefghij234567890klmnopqrst")); 1452 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789klmnopqrst")); 1453 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890klmnopqrst")); 1454 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890klmnopqrst")); 1455 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); 1456 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 10, 1, S("abcdefghij1klmnopqrst")); 1457 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 10, 5, S("abcdefghij12345klmnopqrst")); 1458 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 10, 9, S("abcdefghij123456789klmnopqrst")); 1459 } 1460 1461 template <class S, class SV> 1462 void test25() 1463 { 1464 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 10, 10, S("abcdefghij1234567890klmnopqrst")); 1465 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 10, 11, S("abcdefghij1234567890klmnopqrst")); 1466 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); 1467 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 19, 1, S("abcdefghij0klmnopqrst")); 1468 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 19, 2, S("abcdefghij0klmnopqrst")); 1469 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); 1470 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); 1471 test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 21, 0, S("can't happen")); 1472 test(S("abcdefghijklmnopqrst"), 19, SV(""), 0, 0, S("abcdefghijklmnopqrst")); 1473 test(S("abcdefghijklmnopqrst"), 19, SV(""), 0, 1, S("abcdefghijklmnopqrst")); 1474 test(S("abcdefghijklmnopqrst"), 19, SV(""), 1, 0, S("can't happen")); 1475 test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); 1476 test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 0, 1, S("abcdefghijklmnopqrs1t")); 1477 test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 0, 2, S("abcdefghijklmnopqrs12t")); 1478 test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 0, 4, S("abcdefghijklmnopqrs1234t")); 1479 test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 0, 5, S("abcdefghijklmnopqrs12345t")); 1480 test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 0, 6, S("abcdefghijklmnopqrs12345t")); 1481 test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); 1482 test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 1, 1, S("abcdefghijklmnopqrs2t")); 1483 test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 1, 2, S("abcdefghijklmnopqrs23t")); 1484 test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 1, 3, S("abcdefghijklmnopqrs234t")); 1485 test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 1, 4, S("abcdefghijklmnopqrs2345t")); 1486 test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 1, 5, S("abcdefghijklmnopqrs2345t")); 1487 test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); 1488 test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 2, 1, S("abcdefghijklmnopqrs3t")); 1489 test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 2, 2, S("abcdefghijklmnopqrs34t")); 1490 test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 2, 3, S("abcdefghijklmnopqrs345t")); 1491 test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 2, 4, S("abcdefghijklmnopqrs345t")); 1492 test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); 1493 test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 4, 1, S("abcdefghijklmnopqrs5t")); 1494 test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 4, 2, S("abcdefghijklmnopqrs5t")); 1495 test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); 1496 test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); 1497 test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 6, 0, S("can't happen")); 1498 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); 1499 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 0, 1, S("abcdefghijklmnopqrs1t")); 1500 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 0, 5, S("abcdefghijklmnopqrs12345t")); 1501 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 0, 9, S("abcdefghijklmnopqrs123456789t")); 1502 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890t")); 1503 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 0, 11, S("abcdefghijklmnopqrs1234567890t")); 1504 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); 1505 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 1, 1, S("abcdefghijklmnopqrs2t")); 1506 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 1, 4, S("abcdefghijklmnopqrs2345t")); 1507 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 1, 8, S("abcdefghijklmnopqrs23456789t")); 1508 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 1, 9, S("abcdefghijklmnopqrs234567890t")); 1509 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 1, 10, S("abcdefghijklmnopqrs234567890t")); 1510 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); 1511 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 5, 1, S("abcdefghijklmnopqrs6t")); 1512 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 5, 2, S("abcdefghijklmnopqrs67t")); 1513 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 5, 4, S("abcdefghijklmnopqrs6789t")); 1514 } 1515 1516 template <class S, class SV> 1517 void test26() 1518 { 1519 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 5, 5, S("abcdefghijklmnopqrs67890t")); 1520 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 5, 6, S("abcdefghijklmnopqrs67890t")); 1521 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); 1522 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 9, 1, S("abcdefghijklmnopqrs0t")); 1523 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 9, 2, S("abcdefghijklmnopqrs0t")); 1524 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); 1525 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); 1526 test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 11, 0, S("can't happen")); 1527 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); 1528 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrs1t")); 1529 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890t")); 1530 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrs1234567890123456789t")); 1531 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrs12345678901234567890t")); 1532 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrs12345678901234567890t")); 1533 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); 1534 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrs2t")); 1535 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrs234567890t")); 1536 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrs234567890123456789t")); 1537 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrs2345678901234567890t")); 1538 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrs2345678901234567890t")); 1539 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); 1540 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrs1t")); 1541 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrs12345t")); 1542 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrs123456789t")); 1543 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrs1234567890t")); 1544 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrs1234567890t")); 1545 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); 1546 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrs0t")); 1547 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrs0t")); 1548 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); 1549 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); 1550 test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 21, 0, S("can't happen")); 1551 test(S("abcdefghijklmnopqrst"), 20, SV(""), 0, 0, S("abcdefghijklmnopqrst")); 1552 test(S("abcdefghijklmnopqrst"), 20, SV(""), 0, 1, S("abcdefghijklmnopqrst")); 1553 test(S("abcdefghijklmnopqrst"), 20, SV(""), 1, 0, S("can't happen")); 1554 test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); 1555 test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 0, 1, S("abcdefghijklmnopqrst1")); 1556 test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 0, 2, S("abcdefghijklmnopqrst12")); 1557 test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 0, 4, S("abcdefghijklmnopqrst1234")); 1558 test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 0, 5, S("abcdefghijklmnopqrst12345")); 1559 test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 0, 6, S("abcdefghijklmnopqrst12345")); 1560 test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); 1561 test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 1, 1, S("abcdefghijklmnopqrst2")); 1562 test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 1, 2, S("abcdefghijklmnopqrst23")); 1563 test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 1, 3, S("abcdefghijklmnopqrst234")); 1564 test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 1, 4, S("abcdefghijklmnopqrst2345")); 1565 test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 1, 5, S("abcdefghijklmnopqrst2345")); 1566 test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); 1567 test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 2, 1, S("abcdefghijklmnopqrst3")); 1568 test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 2, 2, S("abcdefghijklmnopqrst34")); 1569 } 1570 1571 template <class S, class SV> 1572 void test27() 1573 { 1574 test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 2, 3, S("abcdefghijklmnopqrst345")); 1575 test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 2, 4, S("abcdefghijklmnopqrst345")); 1576 test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); 1577 test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 4, 1, S("abcdefghijklmnopqrst5")); 1578 test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 4, 2, S("abcdefghijklmnopqrst5")); 1579 test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); 1580 test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); 1581 test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 6, 0, S("can't happen")); 1582 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); 1583 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 0, 1, S("abcdefghijklmnopqrst1")); 1584 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 0, 5, S("abcdefghijklmnopqrst12345")); 1585 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 0, 9, S("abcdefghijklmnopqrst123456789")); 1586 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); 1587 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 0, 11, S("abcdefghijklmnopqrst1234567890")); 1588 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); 1589 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 1, 1, S("abcdefghijklmnopqrst2")); 1590 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 1, 4, S("abcdefghijklmnopqrst2345")); 1591 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 1, 8, S("abcdefghijklmnopqrst23456789")); 1592 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); 1593 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 1, 10, S("abcdefghijklmnopqrst234567890")); 1594 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); 1595 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 5, 1, S("abcdefghijklmnopqrst6")); 1596 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 5, 2, S("abcdefghijklmnopqrst67")); 1597 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 5, 4, S("abcdefghijklmnopqrst6789")); 1598 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 5, 5, S("abcdefghijklmnopqrst67890")); 1599 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 5, 6, S("abcdefghijklmnopqrst67890")); 1600 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); 1601 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 9, 1, S("abcdefghijklmnopqrst0")); 1602 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 9, 2, S("abcdefghijklmnopqrst0")); 1603 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); 1604 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); 1605 test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 11, 0, S("can't happen")); 1606 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); 1607 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrst1")); 1608 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); 1609 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrst1234567890123456789")); 1610 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrst12345678901234567890")); 1611 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrst12345678901234567890")); 1612 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); 1613 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrst2")); 1614 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); 1615 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrst234567890123456789")); 1616 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrst2345678901234567890")); 1617 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrst2345678901234567890")); 1618 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); 1619 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrst1")); 1620 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrst12345")); 1621 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrst123456789")); 1622 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrst1234567890")); 1623 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrst1234567890")); 1624 } 1625 1626 template <class S, class SV> 1627 void test28() 1628 { 1629 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); 1630 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrst0")); 1631 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrst0")); 1632 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); 1633 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); 1634 test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 21, 0, S("can't happen")); 1635 test(S("abcdefghijklmnopqrst"), 21, SV(""), 0, 0, S("can't happen")); 1636 test(S("abcdefghijklmnopqrst"), 21, SV(""), 0, 1, S("can't happen")); 1637 test(S("abcdefghijklmnopqrst"), 21, SV(""), 1, 0, S("can't happen")); 1638 test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 0, 0, S("can't happen")); 1639 test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 0, 1, S("can't happen")); 1640 test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 0, 2, S("can't happen")); 1641 test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 0, 4, S("can't happen")); 1642 test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 0, 5, S("can't happen")); 1643 test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 0, 6, S("can't happen")); 1644 test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 1, 0, S("can't happen")); 1645 test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 1, 1, S("can't happen")); 1646 test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 1, 2, S("can't happen")); 1647 test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 1, 3, S("can't happen")); 1648 test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 1, 4, S("can't happen")); 1649 test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 1, 5, S("can't happen")); 1650 test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 2, 0, S("can't happen")); 1651 test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 2, 1, S("can't happen")); 1652 test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 2, 2, S("can't happen")); 1653 test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 2, 3, S("can't happen")); 1654 test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 2, 4, S("can't happen")); 1655 test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 4, 0, S("can't happen")); 1656 test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 4, 1, S("can't happen")); 1657 test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 4, 2, S("can't happen")); 1658 test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 5, 0, S("can't happen")); 1659 test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 5, 1, S("can't happen")); 1660 test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 6, 0, S("can't happen")); 1661 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 0, 0, S("can't happen")); 1662 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 0, 1, S("can't happen")); 1663 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 0, 5, S("can't happen")); 1664 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 0, 9, S("can't happen")); 1665 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 0, 10, S("can't happen")); 1666 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 0, 11, S("can't happen")); 1667 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 1, 0, S("can't happen")); 1668 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 1, 1, S("can't happen")); 1669 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 1, 4, S("can't happen")); 1670 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 1, 8, S("can't happen")); 1671 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 1, 9, S("can't happen")); 1672 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 1, 10, S("can't happen")); 1673 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 5, 0, S("can't happen")); 1674 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 5, 1, S("can't happen")); 1675 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 5, 2, S("can't happen")); 1676 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 5, 4, S("can't happen")); 1677 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 5, 5, S("can't happen")); 1678 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 5, 6, S("can't happen")); 1679 } 1680 1681 template <class S, class SV> 1682 void test29() 1683 { 1684 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 9, 0, S("can't happen")); 1685 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 9, 1, S("can't happen")); 1686 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 9, 2, S("can't happen")); 1687 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 10, 0, S("can't happen")); 1688 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 10, 1, S("can't happen")); 1689 test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 11, 0, S("can't happen")); 1690 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 0, 0, S("can't happen")); 1691 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 0, 1, S("can't happen")); 1692 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 0, 10, S("can't happen")); 1693 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 0, 19, S("can't happen")); 1694 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 0, 20, S("can't happen")); 1695 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 0, 21, S("can't happen")); 1696 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 1, 0, S("can't happen")); 1697 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 1, 1, S("can't happen")); 1698 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 1, 9, S("can't happen")); 1699 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 1, 18, S("can't happen")); 1700 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 1, 19, S("can't happen")); 1701 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 1, 20, S("can't happen")); 1702 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 10, 0, S("can't happen")); 1703 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 10, 1, S("can't happen")); 1704 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 10, 5, S("can't happen")); 1705 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 10, 9, S("can't happen")); 1706 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 10, 10, S("can't happen")); 1707 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 10, 11, S("can't happen")); 1708 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 19, 0, S("can't happen")); 1709 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 19, 1, S("can't happen")); 1710 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 19, 2, S("can't happen")); 1711 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 20, 0, S("can't happen")); 1712 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 20, 1, S("can't happen")); 1713 test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 21, 0, S("can't happen")); 1714 } 1715 1716 template <class S, class SV> 1717 void test30() 1718 { 1719 test_npos(S(""), 0, SV("12345678901234567890"), 0, S("12345678901234567890")); 1720 test_npos(S(""), 0, SV("12345678901234567890"), 1, S( "2345678901234567890")); 1721 test_npos(S(""), 0, SV("12345678901234567890"), 2, S( "345678901234567890")); 1722 test_npos(S(""), 0, SV("12345678901234567890"), 3, S( "45678901234567890")); 1723 test_npos(S(""), 0, SV("12345678901234567890"), 5, S( "678901234567890")); 1724 test_npos(S(""), 0, SV("12345678901234567890"), 10, S( "1234567890")); 1725 test_npos(S(""), 0, SV("12345678901234567890"), 21, S("can't happen")); 1726 test_npos(S("abcdefghijklmnopqrst"), 10, SV("12345"), 0, S("abcdefghij12345klmnopqrst")); 1727 test_npos(S("abcdefghijklmnopqrst"), 10, SV("12345"), 1, S("abcdefghij2345klmnopqrst")); 1728 test_npos(S("abcdefghijklmnopqrst"), 10, SV("12345"), 3, S("abcdefghij45klmnopqrst")); 1729 test_npos(S("abcdefghijklmnopqrst"), 10, SV("12345"), 5, S("abcdefghijklmnopqrst")); 1730 test_npos(S("abcdefghijklmnopqrst"), 10, SV("12345"), 6, S("can't happen")); 1731 } 1732 1733 int main() 1734 { 1735 { 1736 typedef std::string S; 1737 typedef std::string_view SV; 1738 test0<S, SV>(); 1739 test1<S, SV>(); 1740 test2<S, SV>(); 1741 test3<S, SV>(); 1742 test4<S, SV>(); 1743 test5<S, SV>(); 1744 test6<S, SV>(); 1745 test7<S, SV>(); 1746 test8<S, SV>(); 1747 test9<S, SV>(); 1748 test10<S, SV>(); 1749 test11<S, SV>(); 1750 test12<S, SV>(); 1751 test13<S, SV>(); 1752 test14<S, SV>(); 1753 test15<S, SV>(); 1754 test16<S, SV>(); 1755 test17<S, SV>(); 1756 test18<S, SV>(); 1757 test19<S, SV>(); 1758 test20<S, SV>(); 1759 test21<S, SV>(); 1760 test22<S, SV>(); 1761 test23<S, SV>(); 1762 test24<S, SV>(); 1763 test25<S, SV>(); 1764 test26<S, SV>(); 1765 test27<S, SV>(); 1766 test28<S, SV>(); 1767 test29<S, SV>(); 1768 test30<S, SV>(); 1769 } 1770 #if TEST_STD_VER >= 11 1771 { 1772 typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S; 1773 typedef std::basic_string_view<char, std::char_traits<char>> SV; 1774 test0<S, SV>(); 1775 test1<S, SV>(); 1776 test2<S, SV>(); 1777 test3<S, SV>(); 1778 test4<S, SV>(); 1779 test5<S, SV>(); 1780 test6<S, SV>(); 1781 test7<S, SV>(); 1782 test8<S, SV>(); 1783 test9<S, SV>(); 1784 test10<S, SV>(); 1785 test11<S, SV>(); 1786 test12<S, SV>(); 1787 test13<S, SV>(); 1788 test14<S, SV>(); 1789 test15<S, SV>(); 1790 test16<S, SV>(); 1791 test17<S, SV>(); 1792 test18<S, SV>(); 1793 test19<S, SV>(); 1794 test20<S, SV>(); 1795 test21<S, SV>(); 1796 test22<S, SV>(); 1797 test23<S, SV>(); 1798 test24<S, SV>(); 1799 test25<S, SV>(); 1800 test26<S, SV>(); 1801 test27<S, SV>(); 1802 test28<S, SV>(); 1803 test29<S, SV>(); 1804 test30<S, SV>(); 1805 } 1806 #endif 1807 { 1808 typedef std::string S; 1809 typedef std::string_view SV; 1810 S s; 1811 SV sv = "EFGH"; 1812 char arr[] = "IJKL"; 1813 1814 s.insert(0, "CDEF", 0); // calls insert(const char *, len) 1815 assert(s == ""); 1816 s.clear(); 1817 1818 s.insert(0, "QRST", 0, std::string::npos); // calls insert(string("QRST"), pos, npos) 1819 assert(s == "QRST"); 1820 s.clear(); 1821 1822 s.insert(0, sv, 0); // calls insert(T, pos, npos) 1823 assert(s == sv); 1824 s.clear(); 1825 1826 s.insert(0, sv, 0, std::string::npos); // calls insert(T, pos, npos) 1827 assert(s == sv); 1828 s.clear(); 1829 1830 s.insert(0, arr, 0); // calls insert(const char *, len) 1831 assert(s == ""); 1832 s.clear(); 1833 1834 s.insert(0, arr, 0, std::string::npos); // calls insert(string("IJKL"), pos, npos) 1835 assert(s == "IJKL"); 1836 s.clear(); 1837 1838 s.insert(0, arr, 0); // calls insert(const char *, len) 1839 assert(s == ""); 1840 s.clear(); 1841 } 1842 } 1843