1//===----------------------------------------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is dual licensed under the MIT and the University of Illinois Open 6// Source Licenses. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10// XFAIL: libcpp-no-exceptions 11// <string> 12 13// basic_string<charT,traits,Allocator>& 14// insert(size_type pos, const charT* s, size_type n); 15 16#include <string> 17#include <stdexcept> 18#include <cassert> 19 20#include "test_macros.h" 21#include "min_allocator.h" 22 23template <class S> 24void 25test(S s, typename S::size_type pos, const typename S::value_type* str, 26 typename S::size_type n, S expected) 27{ 28 typename S::size_type old_size = s.size(); 29 S s0 = s; 30 try 31 { 32 s.insert(pos, str, n); 33 LIBCPP_ASSERT(s.__invariants()); 34 assert(pos <= old_size); 35 assert(s == expected); 36 } 37 catch (std::out_of_range&) 38 { 39 assert(pos > old_size); 40 assert(s == s0); 41 } 42} 43 44int main() 45{ 46 { 47 typedef std::string S; 48 test(S(""), 0, "", 0, S("")); 49 test(S(""), 0, "12345", 0, S("")); 50 test(S(""), 0, "12345", 1, S("1")); 51 test(S(""), 0, "12345", 2, S("12")); 52 test(S(""), 0, "12345", 4, S("1234")); 53 test(S(""), 0, "12345", 5, S("12345")); 54 test(S(""), 0, "1234567890", 0, S("")); 55 test(S(""), 0, "1234567890", 1, S("1")); 56 test(S(""), 0, "1234567890", 5, S("12345")); 57 test(S(""), 0, "1234567890", 9, S("123456789")); 58 test(S(""), 0, "1234567890", 10, S("1234567890")); 59 test(S(""), 0, "12345678901234567890", 0, S("")); 60 test(S(""), 0, "12345678901234567890", 1, S("1")); 61 test(S(""), 0, "12345678901234567890", 10, S("1234567890")); 62 test(S(""), 0, "12345678901234567890", 19, S("1234567890123456789")); 63 test(S(""), 0, "12345678901234567890", 20, S("12345678901234567890")); 64 test(S(""), 1, "", 0, S("can't happen")); 65 test(S(""), 1, "12345", 0, S("can't happen")); 66 test(S(""), 1, "12345", 1, S("can't happen")); 67 test(S(""), 1, "12345", 2, S("can't happen")); 68 test(S(""), 1, "12345", 4, S("can't happen")); 69 test(S(""), 1, "12345", 5, S("can't happen")); 70 test(S(""), 1, "1234567890", 0, S("can't happen")); 71 test(S(""), 1, "1234567890", 1, S("can't happen")); 72 test(S(""), 1, "1234567890", 5, S("can't happen")); 73 test(S(""), 1, "1234567890", 9, S("can't happen")); 74 test(S(""), 1, "1234567890", 10, S("can't happen")); 75 test(S(""), 1, "12345678901234567890", 0, S("can't happen")); 76 test(S(""), 1, "12345678901234567890", 1, S("can't happen")); 77 test(S(""), 1, "12345678901234567890", 10, S("can't happen")); 78 test(S(""), 1, "12345678901234567890", 19, S("can't happen")); 79 test(S(""), 1, "12345678901234567890", 20, S("can't happen")); 80 test(S("abcde"), 0, "", 0, S("abcde")); 81 test(S("abcde"), 0, "12345", 0, S("abcde")); 82 test(S("abcde"), 0, "12345", 1, S("1abcde")); 83 test(S("abcde"), 0, "12345", 2, S("12abcde")); 84 test(S("abcde"), 0, "12345", 4, S("1234abcde")); 85 test(S("abcde"), 0, "12345", 5, S("12345abcde")); 86 test(S("abcde"), 0, "1234567890", 0, S("abcde")); 87 test(S("abcde"), 0, "1234567890", 1, S("1abcde")); 88 test(S("abcde"), 0, "1234567890", 5, S("12345abcde")); 89 test(S("abcde"), 0, "1234567890", 9, S("123456789abcde")); 90 test(S("abcde"), 0, "1234567890", 10, S("1234567890abcde")); 91 test(S("abcde"), 0, "12345678901234567890", 0, S("abcde")); 92 test(S("abcde"), 0, "12345678901234567890", 1, S("1abcde")); 93 test(S("abcde"), 0, "12345678901234567890", 10, S("1234567890abcde")); 94 test(S("abcde"), 0, "12345678901234567890", 19, S("1234567890123456789abcde")); 95 test(S("abcde"), 0, "12345678901234567890", 20, S("12345678901234567890abcde")); 96 test(S("abcde"), 1, "", 0, S("abcde")); 97 test(S("abcde"), 1, "12345", 0, S("abcde")); 98 test(S("abcde"), 1, "12345", 1, S("a1bcde")); 99 test(S("abcde"), 1, "12345", 2, S("a12bcde")); 100 test(S("abcde"), 1, "12345", 4, S("a1234bcde")); 101 test(S("abcde"), 1, "12345", 5, S("a12345bcde")); 102 test(S("abcde"), 1, "1234567890", 0, S("abcde")); 103 test(S("abcde"), 1, "1234567890", 1, S("a1bcde")); 104 test(S("abcde"), 1, "1234567890", 5, S("a12345bcde")); 105 test(S("abcde"), 1, "1234567890", 9, S("a123456789bcde")); 106 test(S("abcde"), 1, "1234567890", 10, S("a1234567890bcde")); 107 test(S("abcde"), 1, "12345678901234567890", 0, S("abcde")); 108 test(S("abcde"), 1, "12345678901234567890", 1, S("a1bcde")); 109 test(S("abcde"), 1, "12345678901234567890", 10, S("a1234567890bcde")); 110 test(S("abcde"), 1, "12345678901234567890", 19, S("a1234567890123456789bcde")); 111 test(S("abcde"), 1, "12345678901234567890", 20, S("a12345678901234567890bcde")); 112 test(S("abcde"), 2, "", 0, S("abcde")); 113 test(S("abcde"), 2, "12345", 0, S("abcde")); 114 test(S("abcde"), 2, "12345", 1, S("ab1cde")); 115 test(S("abcde"), 2, "12345", 2, S("ab12cde")); 116 test(S("abcde"), 2, "12345", 4, S("ab1234cde")); 117 test(S("abcde"), 2, "12345", 5, S("ab12345cde")); 118 test(S("abcde"), 2, "1234567890", 0, S("abcde")); 119 test(S("abcde"), 2, "1234567890", 1, S("ab1cde")); 120 test(S("abcde"), 2, "1234567890", 5, S("ab12345cde")); 121 test(S("abcde"), 2, "1234567890", 9, S("ab123456789cde")); 122 test(S("abcde"), 2, "1234567890", 10, S("ab1234567890cde")); 123 test(S("abcde"), 2, "12345678901234567890", 0, S("abcde")); 124 test(S("abcde"), 2, "12345678901234567890", 1, S("ab1cde")); 125 test(S("abcde"), 2, "12345678901234567890", 10, S("ab1234567890cde")); 126 test(S("abcde"), 2, "12345678901234567890", 19, S("ab1234567890123456789cde")); 127 test(S("abcde"), 2, "12345678901234567890", 20, S("ab12345678901234567890cde")); 128 test(S("abcde"), 4, "", 0, S("abcde")); 129 test(S("abcde"), 4, "12345", 0, S("abcde")); 130 test(S("abcde"), 4, "12345", 1, S("abcd1e")); 131 test(S("abcde"), 4, "12345", 2, S("abcd12e")); 132 test(S("abcde"), 4, "12345", 4, S("abcd1234e")); 133 test(S("abcde"), 4, "12345", 5, S("abcd12345e")); 134 test(S("abcde"), 4, "1234567890", 0, S("abcde")); 135 test(S("abcde"), 4, "1234567890", 1, S("abcd1e")); 136 test(S("abcde"), 4, "1234567890", 5, S("abcd12345e")); 137 test(S("abcde"), 4, "1234567890", 9, S("abcd123456789e")); 138 test(S("abcde"), 4, "1234567890", 10, S("abcd1234567890e")); 139 test(S("abcde"), 4, "12345678901234567890", 0, S("abcde")); 140 test(S("abcde"), 4, "12345678901234567890", 1, S("abcd1e")); 141 test(S("abcde"), 4, "12345678901234567890", 10, S("abcd1234567890e")); 142 test(S("abcde"), 4, "12345678901234567890", 19, S("abcd1234567890123456789e")); 143 test(S("abcde"), 4, "12345678901234567890", 20, S("abcd12345678901234567890e")); 144 test(S("abcde"), 5, "", 0, S("abcde")); 145 test(S("abcde"), 5, "12345", 0, S("abcde")); 146 test(S("abcde"), 5, "12345", 1, S("abcde1")); 147 test(S("abcde"), 5, "12345", 2, S("abcde12")); 148 test(S("abcde"), 5, "12345", 4, S("abcde1234")); 149 test(S("abcde"), 5, "12345", 5, S("abcde12345")); 150 test(S("abcde"), 5, "1234567890", 0, S("abcde")); 151 test(S("abcde"), 5, "1234567890", 1, S("abcde1")); 152 test(S("abcde"), 5, "1234567890", 5, S("abcde12345")); 153 test(S("abcde"), 5, "1234567890", 9, S("abcde123456789")); 154 test(S("abcde"), 5, "1234567890", 10, S("abcde1234567890")); 155 test(S("abcde"), 5, "12345678901234567890", 0, S("abcde")); 156 test(S("abcde"), 5, "12345678901234567890", 1, S("abcde1")); 157 test(S("abcde"), 5, "12345678901234567890", 10, S("abcde1234567890")); 158 test(S("abcde"), 5, "12345678901234567890", 19, S("abcde1234567890123456789")); 159 test(S("abcde"), 5, "12345678901234567890", 20, S("abcde12345678901234567890")); 160 test(S("abcde"), 6, "", 0, S("can't happen")); 161 test(S("abcde"), 6, "12345", 0, S("can't happen")); 162 test(S("abcde"), 6, "12345", 1, S("can't happen")); 163 test(S("abcde"), 6, "12345", 2, S("can't happen")); 164 test(S("abcde"), 6, "12345", 4, S("can't happen")); 165 test(S("abcde"), 6, "12345", 5, S("can't happen")); 166 test(S("abcde"), 6, "1234567890", 0, S("can't happen")); 167 test(S("abcde"), 6, "1234567890", 1, S("can't happen")); 168 test(S("abcde"), 6, "1234567890", 5, S("can't happen")); 169 test(S("abcde"), 6, "1234567890", 9, S("can't happen")); 170 test(S("abcde"), 6, "1234567890", 10, S("can't happen")); 171 test(S("abcde"), 6, "12345678901234567890", 0, S("can't happen")); 172 test(S("abcde"), 6, "12345678901234567890", 1, S("can't happen")); 173 test(S("abcde"), 6, "12345678901234567890", 10, S("can't happen")); 174 test(S("abcde"), 6, "12345678901234567890", 19, S("can't happen")); 175 test(S("abcde"), 6, "12345678901234567890", 20, S("can't happen")); 176 test(S("abcdefghij"), 0, "", 0, S("abcdefghij")); 177 test(S("abcdefghij"), 0, "12345", 0, S("abcdefghij")); 178 test(S("abcdefghij"), 0, "12345", 1, S("1abcdefghij")); 179 test(S("abcdefghij"), 0, "12345", 2, S("12abcdefghij")); 180 test(S("abcdefghij"), 0, "12345", 4, S("1234abcdefghij")); 181 test(S("abcdefghij"), 0, "12345", 5, S("12345abcdefghij")); 182 test(S("abcdefghij"), 0, "1234567890", 0, S("abcdefghij")); 183 test(S("abcdefghij"), 0, "1234567890", 1, S("1abcdefghij")); 184 test(S("abcdefghij"), 0, "1234567890", 5, S("12345abcdefghij")); 185 test(S("abcdefghij"), 0, "1234567890", 9, S("123456789abcdefghij")); 186 test(S("abcdefghij"), 0, "1234567890", 10, S("1234567890abcdefghij")); 187 test(S("abcdefghij"), 0, "12345678901234567890", 0, S("abcdefghij")); 188 test(S("abcdefghij"), 0, "12345678901234567890", 1, S("1abcdefghij")); 189 test(S("abcdefghij"), 0, "12345678901234567890", 10, S("1234567890abcdefghij")); 190 test(S("abcdefghij"), 0, "12345678901234567890", 19, S("1234567890123456789abcdefghij")); 191 test(S("abcdefghij"), 0, "12345678901234567890", 20, S("12345678901234567890abcdefghij")); 192 test(S("abcdefghij"), 1, "", 0, S("abcdefghij")); 193 test(S("abcdefghij"), 1, "12345", 0, S("abcdefghij")); 194 test(S("abcdefghij"), 1, "12345", 1, S("a1bcdefghij")); 195 test(S("abcdefghij"), 1, "12345", 2, S("a12bcdefghij")); 196 test(S("abcdefghij"), 1, "12345", 4, S("a1234bcdefghij")); 197 test(S("abcdefghij"), 1, "12345", 5, S("a12345bcdefghij")); 198 test(S("abcdefghij"), 1, "1234567890", 0, S("abcdefghij")); 199 test(S("abcdefghij"), 1, "1234567890", 1, S("a1bcdefghij")); 200 test(S("abcdefghij"), 1, "1234567890", 5, S("a12345bcdefghij")); 201 test(S("abcdefghij"), 1, "1234567890", 9, S("a123456789bcdefghij")); 202 test(S("abcdefghij"), 1, "1234567890", 10, S("a1234567890bcdefghij")); 203 test(S("abcdefghij"), 1, "12345678901234567890", 0, S("abcdefghij")); 204 test(S("abcdefghij"), 1, "12345678901234567890", 1, S("a1bcdefghij")); 205 test(S("abcdefghij"), 1, "12345678901234567890", 10, S("a1234567890bcdefghij")); 206 test(S("abcdefghij"), 1, "12345678901234567890", 19, S("a1234567890123456789bcdefghij")); 207 test(S("abcdefghij"), 1, "12345678901234567890", 20, S("a12345678901234567890bcdefghij")); 208 test(S("abcdefghij"), 5, "", 0, S("abcdefghij")); 209 test(S("abcdefghij"), 5, "12345", 0, S("abcdefghij")); 210 test(S("abcdefghij"), 5, "12345", 1, S("abcde1fghij")); 211 test(S("abcdefghij"), 5, "12345", 2, S("abcde12fghij")); 212 test(S("abcdefghij"), 5, "12345", 4, S("abcde1234fghij")); 213 test(S("abcdefghij"), 5, "12345", 5, S("abcde12345fghij")); 214 test(S("abcdefghij"), 5, "1234567890", 0, S("abcdefghij")); 215 test(S("abcdefghij"), 5, "1234567890", 1, S("abcde1fghij")); 216 test(S("abcdefghij"), 5, "1234567890", 5, S("abcde12345fghij")); 217 test(S("abcdefghij"), 5, "1234567890", 9, S("abcde123456789fghij")); 218 test(S("abcdefghij"), 5, "1234567890", 10, S("abcde1234567890fghij")); 219 test(S("abcdefghij"), 5, "12345678901234567890", 0, S("abcdefghij")); 220 test(S("abcdefghij"), 5, "12345678901234567890", 1, S("abcde1fghij")); 221 test(S("abcdefghij"), 5, "12345678901234567890", 10, S("abcde1234567890fghij")); 222 test(S("abcdefghij"), 5, "12345678901234567890", 19, S("abcde1234567890123456789fghij")); 223 test(S("abcdefghij"), 5, "12345678901234567890", 20, S("abcde12345678901234567890fghij")); 224 test(S("abcdefghij"), 9, "", 0, S("abcdefghij")); 225 test(S("abcdefghij"), 9, "12345", 0, S("abcdefghij")); 226 test(S("abcdefghij"), 9, "12345", 1, S("abcdefghi1j")); 227 test(S("abcdefghij"), 9, "12345", 2, S("abcdefghi12j")); 228 test(S("abcdefghij"), 9, "12345", 4, S("abcdefghi1234j")); 229 test(S("abcdefghij"), 9, "12345", 5, S("abcdefghi12345j")); 230 test(S("abcdefghij"), 9, "1234567890", 0, S("abcdefghij")); 231 test(S("abcdefghij"), 9, "1234567890", 1, S("abcdefghi1j")); 232 test(S("abcdefghij"), 9, "1234567890", 5, S("abcdefghi12345j")); 233 test(S("abcdefghij"), 9, "1234567890", 9, S("abcdefghi123456789j")); 234 test(S("abcdefghij"), 9, "1234567890", 10, S("abcdefghi1234567890j")); 235 test(S("abcdefghij"), 9, "12345678901234567890", 0, S("abcdefghij")); 236 test(S("abcdefghij"), 9, "12345678901234567890", 1, S("abcdefghi1j")); 237 test(S("abcdefghij"), 9, "12345678901234567890", 10, S("abcdefghi1234567890j")); 238 test(S("abcdefghij"), 9, "12345678901234567890", 19, S("abcdefghi1234567890123456789j")); 239 test(S("abcdefghij"), 9, "12345678901234567890", 20, S("abcdefghi12345678901234567890j")); 240 test(S("abcdefghij"), 10, "", 0, S("abcdefghij")); 241 test(S("abcdefghij"), 10, "12345", 0, S("abcdefghij")); 242 test(S("abcdefghij"), 10, "12345", 1, S("abcdefghij1")); 243 test(S("abcdefghij"), 10, "12345", 2, S("abcdefghij12")); 244 test(S("abcdefghij"), 10, "12345", 4, S("abcdefghij1234")); 245 test(S("abcdefghij"), 10, "12345", 5, S("abcdefghij12345")); 246 test(S("abcdefghij"), 10, "1234567890", 0, S("abcdefghij")); 247 test(S("abcdefghij"), 10, "1234567890", 1, S("abcdefghij1")); 248 test(S("abcdefghij"), 10, "1234567890", 5, S("abcdefghij12345")); 249 test(S("abcdefghij"), 10, "1234567890", 9, S("abcdefghij123456789")); 250 test(S("abcdefghij"), 10, "1234567890", 10, S("abcdefghij1234567890")); 251 test(S("abcdefghij"), 10, "12345678901234567890", 0, S("abcdefghij")); 252 test(S("abcdefghij"), 10, "12345678901234567890", 1, S("abcdefghij1")); 253 test(S("abcdefghij"), 10, "12345678901234567890", 10, S("abcdefghij1234567890")); 254 test(S("abcdefghij"), 10, "12345678901234567890", 19, S("abcdefghij1234567890123456789")); 255 test(S("abcdefghij"), 10, "12345678901234567890", 20, S("abcdefghij12345678901234567890")); 256 test(S("abcdefghij"), 11, "", 0, S("can't happen")); 257 test(S("abcdefghij"), 11, "12345", 0, S("can't happen")); 258 test(S("abcdefghij"), 11, "12345", 1, S("can't happen")); 259 test(S("abcdefghij"), 11, "12345", 2, S("can't happen")); 260 test(S("abcdefghij"), 11, "12345", 4, S("can't happen")); 261 test(S("abcdefghij"), 11, "12345", 5, S("can't happen")); 262 test(S("abcdefghij"), 11, "1234567890", 0, S("can't happen")); 263 test(S("abcdefghij"), 11, "1234567890", 1, S("can't happen")); 264 test(S("abcdefghij"), 11, "1234567890", 5, S("can't happen")); 265 test(S("abcdefghij"), 11, "1234567890", 9, S("can't happen")); 266 test(S("abcdefghij"), 11, "1234567890", 10, S("can't happen")); 267 test(S("abcdefghij"), 11, "12345678901234567890", 0, S("can't happen")); 268 test(S("abcdefghij"), 11, "12345678901234567890", 1, S("can't happen")); 269 test(S("abcdefghij"), 11, "12345678901234567890", 10, S("can't happen")); 270 test(S("abcdefghij"), 11, "12345678901234567890", 19, S("can't happen")); 271 test(S("abcdefghij"), 11, "12345678901234567890", 20, S("can't happen")); 272 test(S("abcdefghijklmnopqrst"), 0, "", 0, S("abcdefghijklmnopqrst")); 273 test(S("abcdefghijklmnopqrst"), 0, "12345", 0, S("abcdefghijklmnopqrst")); 274 test(S("abcdefghijklmnopqrst"), 0, "12345", 1, S("1abcdefghijklmnopqrst")); 275 test(S("abcdefghijklmnopqrst"), 0, "12345", 2, S("12abcdefghijklmnopqrst")); 276 test(S("abcdefghijklmnopqrst"), 0, "12345", 4, S("1234abcdefghijklmnopqrst")); 277 test(S("abcdefghijklmnopqrst"), 0, "12345", 5, S("12345abcdefghijklmnopqrst")); 278 test(S("abcdefghijklmnopqrst"), 0, "1234567890", 0, S("abcdefghijklmnopqrst")); 279 test(S("abcdefghijklmnopqrst"), 0, "1234567890", 1, S("1abcdefghijklmnopqrst")); 280 test(S("abcdefghijklmnopqrst"), 0, "1234567890", 5, S("12345abcdefghijklmnopqrst")); 281 test(S("abcdefghijklmnopqrst"), 0, "1234567890", 9, S("123456789abcdefghijklmnopqrst")); 282 test(S("abcdefghijklmnopqrst"), 0, "1234567890", 10, S("1234567890abcdefghijklmnopqrst")); 283 test(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); 284 test(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 1, S("1abcdefghijklmnopqrst")); 285 test(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 10, S("1234567890abcdefghijklmnopqrst")); 286 test(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 19, S("1234567890123456789abcdefghijklmnopqrst")); 287 test(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 20, S("12345678901234567890abcdefghijklmnopqrst")); 288 test(S("abcdefghijklmnopqrst"), 1, "", 0, S("abcdefghijklmnopqrst")); 289 test(S("abcdefghijklmnopqrst"), 1, "12345", 0, S("abcdefghijklmnopqrst")); 290 test(S("abcdefghijklmnopqrst"), 1, "12345", 1, S("a1bcdefghijklmnopqrst")); 291 test(S("abcdefghijklmnopqrst"), 1, "12345", 2, S("a12bcdefghijklmnopqrst")); 292 test(S("abcdefghijklmnopqrst"), 1, "12345", 4, S("a1234bcdefghijklmnopqrst")); 293 test(S("abcdefghijklmnopqrst"), 1, "12345", 5, S("a12345bcdefghijklmnopqrst")); 294 test(S("abcdefghijklmnopqrst"), 1, "1234567890", 0, S("abcdefghijklmnopqrst")); 295 test(S("abcdefghijklmnopqrst"), 1, "1234567890", 1, S("a1bcdefghijklmnopqrst")); 296 test(S("abcdefghijklmnopqrst"), 1, "1234567890", 5, S("a12345bcdefghijklmnopqrst")); 297 test(S("abcdefghijklmnopqrst"), 1, "1234567890", 9, S("a123456789bcdefghijklmnopqrst")); 298 test(S("abcdefghijklmnopqrst"), 1, "1234567890", 10, S("a1234567890bcdefghijklmnopqrst")); 299 test(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); 300 test(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 1, S("a1bcdefghijklmnopqrst")); 301 test(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 10, S("a1234567890bcdefghijklmnopqrst")); 302 test(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 19, S("a1234567890123456789bcdefghijklmnopqrst")); 303 test(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 20, S("a12345678901234567890bcdefghijklmnopqrst")); 304 test(S("abcdefghijklmnopqrst"), 10, "", 0, S("abcdefghijklmnopqrst")); 305 test(S("abcdefghijklmnopqrst"), 10, "12345", 0, S("abcdefghijklmnopqrst")); 306 test(S("abcdefghijklmnopqrst"), 10, "12345", 1, S("abcdefghij1klmnopqrst")); 307 test(S("abcdefghijklmnopqrst"), 10, "12345", 2, S("abcdefghij12klmnopqrst")); 308 test(S("abcdefghijklmnopqrst"), 10, "12345", 4, S("abcdefghij1234klmnopqrst")); 309 test(S("abcdefghijklmnopqrst"), 10, "12345", 5, S("abcdefghij12345klmnopqrst")); 310 test(S("abcdefghijklmnopqrst"), 10, "1234567890", 0, S("abcdefghijklmnopqrst")); 311 test(S("abcdefghijklmnopqrst"), 10, "1234567890", 1, S("abcdefghij1klmnopqrst")); 312 test(S("abcdefghijklmnopqrst"), 10, "1234567890", 5, S("abcdefghij12345klmnopqrst")); 313 test(S("abcdefghijklmnopqrst"), 10, "1234567890", 9, S("abcdefghij123456789klmnopqrst")); 314 test(S("abcdefghijklmnopqrst"), 10, "1234567890", 10, S("abcdefghij1234567890klmnopqrst")); 315 test(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); 316 test(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 1, S("abcdefghij1klmnopqrst")); 317 test(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 10, S("abcdefghij1234567890klmnopqrst")); 318 test(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 19, S("abcdefghij1234567890123456789klmnopqrst")); 319 test(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 20, S("abcdefghij12345678901234567890klmnopqrst")); 320 test(S("abcdefghijklmnopqrst"), 19, "", 0, S("abcdefghijklmnopqrst")); 321 test(S("abcdefghijklmnopqrst"), 19, "12345", 0, S("abcdefghijklmnopqrst")); 322 test(S("abcdefghijklmnopqrst"), 19, "12345", 1, S("abcdefghijklmnopqrs1t")); 323 test(S("abcdefghijklmnopqrst"), 19, "12345", 2, S("abcdefghijklmnopqrs12t")); 324 test(S("abcdefghijklmnopqrst"), 19, "12345", 4, S("abcdefghijklmnopqrs1234t")); 325 test(S("abcdefghijklmnopqrst"), 19, "12345", 5, S("abcdefghijklmnopqrs12345t")); 326 test(S("abcdefghijklmnopqrst"), 19, "1234567890", 0, S("abcdefghijklmnopqrst")); 327 test(S("abcdefghijklmnopqrst"), 19, "1234567890", 1, S("abcdefghijklmnopqrs1t")); 328 test(S("abcdefghijklmnopqrst"), 19, "1234567890", 5, S("abcdefghijklmnopqrs12345t")); 329 test(S("abcdefghijklmnopqrst"), 19, "1234567890", 9, S("abcdefghijklmnopqrs123456789t")); 330 test(S("abcdefghijklmnopqrst"), 19, "1234567890", 10, S("abcdefghijklmnopqrs1234567890t")); 331 test(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); 332 test(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 1, S("abcdefghijklmnopqrs1t")); 333 test(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 10, S("abcdefghijklmnopqrs1234567890t")); 334 test(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 19, S("abcdefghijklmnopqrs1234567890123456789t")); 335 test(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 20, S("abcdefghijklmnopqrs12345678901234567890t")); 336 test(S("abcdefghijklmnopqrst"), 20, "", 0, S("abcdefghijklmnopqrst")); 337 test(S("abcdefghijklmnopqrst"), 20, "12345", 0, S("abcdefghijklmnopqrst")); 338 test(S("abcdefghijklmnopqrst"), 20, "12345", 1, S("abcdefghijklmnopqrst1")); 339 test(S("abcdefghijklmnopqrst"), 20, "12345", 2, S("abcdefghijklmnopqrst12")); 340 test(S("abcdefghijklmnopqrst"), 20, "12345", 4, S("abcdefghijklmnopqrst1234")); 341 test(S("abcdefghijklmnopqrst"), 20, "12345", 5, S("abcdefghijklmnopqrst12345")); 342 test(S("abcdefghijklmnopqrst"), 20, "1234567890", 0, S("abcdefghijklmnopqrst")); 343 test(S("abcdefghijklmnopqrst"), 20, "1234567890", 1, S("abcdefghijklmnopqrst1")); 344 test(S("abcdefghijklmnopqrst"), 20, "1234567890", 5, S("abcdefghijklmnopqrst12345")); 345 test(S("abcdefghijklmnopqrst"), 20, "1234567890", 9, S("abcdefghijklmnopqrst123456789")); 346 test(S("abcdefghijklmnopqrst"), 20, "1234567890", 10, S("abcdefghijklmnopqrst1234567890")); 347 test(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); 348 test(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 1, S("abcdefghijklmnopqrst1")); 349 test(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 10, S("abcdefghijklmnopqrst1234567890")); 350 test(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 19, S("abcdefghijklmnopqrst1234567890123456789")); 351 test(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 20, S("abcdefghijklmnopqrst12345678901234567890")); 352 test(S("abcdefghijklmnopqrst"), 21, "", 0, S("can't happen")); 353 test(S("abcdefghijklmnopqrst"), 21, "12345", 0, S("can't happen")); 354 test(S("abcdefghijklmnopqrst"), 21, "12345", 1, S("can't happen")); 355 test(S("abcdefghijklmnopqrst"), 21, "12345", 2, S("can't happen")); 356 test(S("abcdefghijklmnopqrst"), 21, "12345", 4, S("can't happen")); 357 test(S("abcdefghijklmnopqrst"), 21, "12345", 5, S("can't happen")); 358 test(S("abcdefghijklmnopqrst"), 21, "1234567890", 0, S("can't happen")); 359 test(S("abcdefghijklmnopqrst"), 21, "1234567890", 1, S("can't happen")); 360 test(S("abcdefghijklmnopqrst"), 21, "1234567890", 5, S("can't happen")); 361 test(S("abcdefghijklmnopqrst"), 21, "1234567890", 9, S("can't happen")); 362 test(S("abcdefghijklmnopqrst"), 21, "1234567890", 10, S("can't happen")); 363 test(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 0, S("can't happen")); 364 test(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 1, S("can't happen")); 365 test(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 10, S("can't happen")); 366 test(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 19, S("can't happen")); 367 test(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 20, S("can't happen")); 368 } 369#if TEST_STD_VER >= 11 370 { 371 typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S; 372 test(S(""), 0, "", 0, S("")); 373 test(S(""), 0, "12345", 0, S("")); 374 test(S(""), 0, "12345", 1, S("1")); 375 test(S(""), 0, "12345", 2, S("12")); 376 test(S(""), 0, "12345", 4, S("1234")); 377 test(S(""), 0, "12345", 5, S("12345")); 378 test(S(""), 0, "1234567890", 0, S("")); 379 test(S(""), 0, "1234567890", 1, S("1")); 380 test(S(""), 0, "1234567890", 5, S("12345")); 381 test(S(""), 0, "1234567890", 9, S("123456789")); 382 test(S(""), 0, "1234567890", 10, S("1234567890")); 383 test(S(""), 0, "12345678901234567890", 0, S("")); 384 test(S(""), 0, "12345678901234567890", 1, S("1")); 385 test(S(""), 0, "12345678901234567890", 10, S("1234567890")); 386 test(S(""), 0, "12345678901234567890", 19, S("1234567890123456789")); 387 test(S(""), 0, "12345678901234567890", 20, S("12345678901234567890")); 388 test(S(""), 1, "", 0, S("can't happen")); 389 test(S(""), 1, "12345", 0, S("can't happen")); 390 test(S(""), 1, "12345", 1, S("can't happen")); 391 test(S(""), 1, "12345", 2, S("can't happen")); 392 test(S(""), 1, "12345", 4, S("can't happen")); 393 test(S(""), 1, "12345", 5, S("can't happen")); 394 test(S(""), 1, "1234567890", 0, S("can't happen")); 395 test(S(""), 1, "1234567890", 1, S("can't happen")); 396 test(S(""), 1, "1234567890", 5, S("can't happen")); 397 test(S(""), 1, "1234567890", 9, S("can't happen")); 398 test(S(""), 1, "1234567890", 10, S("can't happen")); 399 test(S(""), 1, "12345678901234567890", 0, S("can't happen")); 400 test(S(""), 1, "12345678901234567890", 1, S("can't happen")); 401 test(S(""), 1, "12345678901234567890", 10, S("can't happen")); 402 test(S(""), 1, "12345678901234567890", 19, S("can't happen")); 403 test(S(""), 1, "12345678901234567890", 20, S("can't happen")); 404 test(S("abcde"), 0, "", 0, S("abcde")); 405 test(S("abcde"), 0, "12345", 0, S("abcde")); 406 test(S("abcde"), 0, "12345", 1, S("1abcde")); 407 test(S("abcde"), 0, "12345", 2, S("12abcde")); 408 test(S("abcde"), 0, "12345", 4, S("1234abcde")); 409 test(S("abcde"), 0, "12345", 5, S("12345abcde")); 410 test(S("abcde"), 0, "1234567890", 0, S("abcde")); 411 test(S("abcde"), 0, "1234567890", 1, S("1abcde")); 412 test(S("abcde"), 0, "1234567890", 5, S("12345abcde")); 413 test(S("abcde"), 0, "1234567890", 9, S("123456789abcde")); 414 test(S("abcde"), 0, "1234567890", 10, S("1234567890abcde")); 415 test(S("abcde"), 0, "12345678901234567890", 0, S("abcde")); 416 test(S("abcde"), 0, "12345678901234567890", 1, S("1abcde")); 417 test(S("abcde"), 0, "12345678901234567890", 10, S("1234567890abcde")); 418 test(S("abcde"), 0, "12345678901234567890", 19, S("1234567890123456789abcde")); 419 test(S("abcde"), 0, "12345678901234567890", 20, S("12345678901234567890abcde")); 420 test(S("abcde"), 1, "", 0, S("abcde")); 421 test(S("abcde"), 1, "12345", 0, S("abcde")); 422 test(S("abcde"), 1, "12345", 1, S("a1bcde")); 423 test(S("abcde"), 1, "12345", 2, S("a12bcde")); 424 test(S("abcde"), 1, "12345", 4, S("a1234bcde")); 425 test(S("abcde"), 1, "12345", 5, S("a12345bcde")); 426 test(S("abcde"), 1, "1234567890", 0, S("abcde")); 427 test(S("abcde"), 1, "1234567890", 1, S("a1bcde")); 428 test(S("abcde"), 1, "1234567890", 5, S("a12345bcde")); 429 test(S("abcde"), 1, "1234567890", 9, S("a123456789bcde")); 430 test(S("abcde"), 1, "1234567890", 10, S("a1234567890bcde")); 431 test(S("abcde"), 1, "12345678901234567890", 0, S("abcde")); 432 test(S("abcde"), 1, "12345678901234567890", 1, S("a1bcde")); 433 test(S("abcde"), 1, "12345678901234567890", 10, S("a1234567890bcde")); 434 test(S("abcde"), 1, "12345678901234567890", 19, S("a1234567890123456789bcde")); 435 test(S("abcde"), 1, "12345678901234567890", 20, S("a12345678901234567890bcde")); 436 test(S("abcde"), 2, "", 0, S("abcde")); 437 test(S("abcde"), 2, "12345", 0, S("abcde")); 438 test(S("abcde"), 2, "12345", 1, S("ab1cde")); 439 test(S("abcde"), 2, "12345", 2, S("ab12cde")); 440 test(S("abcde"), 2, "12345", 4, S("ab1234cde")); 441 test(S("abcde"), 2, "12345", 5, S("ab12345cde")); 442 test(S("abcde"), 2, "1234567890", 0, S("abcde")); 443 test(S("abcde"), 2, "1234567890", 1, S("ab1cde")); 444 test(S("abcde"), 2, "1234567890", 5, S("ab12345cde")); 445 test(S("abcde"), 2, "1234567890", 9, S("ab123456789cde")); 446 test(S("abcde"), 2, "1234567890", 10, S("ab1234567890cde")); 447 test(S("abcde"), 2, "12345678901234567890", 0, S("abcde")); 448 test(S("abcde"), 2, "12345678901234567890", 1, S("ab1cde")); 449 test(S("abcde"), 2, "12345678901234567890", 10, S("ab1234567890cde")); 450 test(S("abcde"), 2, "12345678901234567890", 19, S("ab1234567890123456789cde")); 451 test(S("abcde"), 2, "12345678901234567890", 20, S("ab12345678901234567890cde")); 452 test(S("abcde"), 4, "", 0, S("abcde")); 453 test(S("abcde"), 4, "12345", 0, S("abcde")); 454 test(S("abcde"), 4, "12345", 1, S("abcd1e")); 455 test(S("abcde"), 4, "12345", 2, S("abcd12e")); 456 test(S("abcde"), 4, "12345", 4, S("abcd1234e")); 457 test(S("abcde"), 4, "12345", 5, S("abcd12345e")); 458 test(S("abcde"), 4, "1234567890", 0, S("abcde")); 459 test(S("abcde"), 4, "1234567890", 1, S("abcd1e")); 460 test(S("abcde"), 4, "1234567890", 5, S("abcd12345e")); 461 test(S("abcde"), 4, "1234567890", 9, S("abcd123456789e")); 462 test(S("abcde"), 4, "1234567890", 10, S("abcd1234567890e")); 463 test(S("abcde"), 4, "12345678901234567890", 0, S("abcde")); 464 test(S("abcde"), 4, "12345678901234567890", 1, S("abcd1e")); 465 test(S("abcde"), 4, "12345678901234567890", 10, S("abcd1234567890e")); 466 test(S("abcde"), 4, "12345678901234567890", 19, S("abcd1234567890123456789e")); 467 test(S("abcde"), 4, "12345678901234567890", 20, S("abcd12345678901234567890e")); 468 test(S("abcde"), 5, "", 0, S("abcde")); 469 test(S("abcde"), 5, "12345", 0, S("abcde")); 470 test(S("abcde"), 5, "12345", 1, S("abcde1")); 471 test(S("abcde"), 5, "12345", 2, S("abcde12")); 472 test(S("abcde"), 5, "12345", 4, S("abcde1234")); 473 test(S("abcde"), 5, "12345", 5, S("abcde12345")); 474 test(S("abcde"), 5, "1234567890", 0, S("abcde")); 475 test(S("abcde"), 5, "1234567890", 1, S("abcde1")); 476 test(S("abcde"), 5, "1234567890", 5, S("abcde12345")); 477 test(S("abcde"), 5, "1234567890", 9, S("abcde123456789")); 478 test(S("abcde"), 5, "1234567890", 10, S("abcde1234567890")); 479 test(S("abcde"), 5, "12345678901234567890", 0, S("abcde")); 480 test(S("abcde"), 5, "12345678901234567890", 1, S("abcde1")); 481 test(S("abcde"), 5, "12345678901234567890", 10, S("abcde1234567890")); 482 test(S("abcde"), 5, "12345678901234567890", 19, S("abcde1234567890123456789")); 483 test(S("abcde"), 5, "12345678901234567890", 20, S("abcde12345678901234567890")); 484 test(S("abcde"), 6, "", 0, S("can't happen")); 485 test(S("abcde"), 6, "12345", 0, S("can't happen")); 486 test(S("abcde"), 6, "12345", 1, S("can't happen")); 487 test(S("abcde"), 6, "12345", 2, S("can't happen")); 488 test(S("abcde"), 6, "12345", 4, S("can't happen")); 489 test(S("abcde"), 6, "12345", 5, S("can't happen")); 490 test(S("abcde"), 6, "1234567890", 0, S("can't happen")); 491 test(S("abcde"), 6, "1234567890", 1, S("can't happen")); 492 test(S("abcde"), 6, "1234567890", 5, S("can't happen")); 493 test(S("abcde"), 6, "1234567890", 9, S("can't happen")); 494 test(S("abcde"), 6, "1234567890", 10, S("can't happen")); 495 test(S("abcde"), 6, "12345678901234567890", 0, S("can't happen")); 496 test(S("abcde"), 6, "12345678901234567890", 1, S("can't happen")); 497 test(S("abcde"), 6, "12345678901234567890", 10, S("can't happen")); 498 test(S("abcde"), 6, "12345678901234567890", 19, S("can't happen")); 499 test(S("abcde"), 6, "12345678901234567890", 20, S("can't happen")); 500 test(S("abcdefghij"), 0, "", 0, S("abcdefghij")); 501 test(S("abcdefghij"), 0, "12345", 0, S("abcdefghij")); 502 test(S("abcdefghij"), 0, "12345", 1, S("1abcdefghij")); 503 test(S("abcdefghij"), 0, "12345", 2, S("12abcdefghij")); 504 test(S("abcdefghij"), 0, "12345", 4, S("1234abcdefghij")); 505 test(S("abcdefghij"), 0, "12345", 5, S("12345abcdefghij")); 506 test(S("abcdefghij"), 0, "1234567890", 0, S("abcdefghij")); 507 test(S("abcdefghij"), 0, "1234567890", 1, S("1abcdefghij")); 508 test(S("abcdefghij"), 0, "1234567890", 5, S("12345abcdefghij")); 509 test(S("abcdefghij"), 0, "1234567890", 9, S("123456789abcdefghij")); 510 test(S("abcdefghij"), 0, "1234567890", 10, S("1234567890abcdefghij")); 511 test(S("abcdefghij"), 0, "12345678901234567890", 0, S("abcdefghij")); 512 test(S("abcdefghij"), 0, "12345678901234567890", 1, S("1abcdefghij")); 513 test(S("abcdefghij"), 0, "12345678901234567890", 10, S("1234567890abcdefghij")); 514 test(S("abcdefghij"), 0, "12345678901234567890", 19, S("1234567890123456789abcdefghij")); 515 test(S("abcdefghij"), 0, "12345678901234567890", 20, S("12345678901234567890abcdefghij")); 516 test(S("abcdefghij"), 1, "", 0, S("abcdefghij")); 517 test(S("abcdefghij"), 1, "12345", 0, S("abcdefghij")); 518 test(S("abcdefghij"), 1, "12345", 1, S("a1bcdefghij")); 519 test(S("abcdefghij"), 1, "12345", 2, S("a12bcdefghij")); 520 test(S("abcdefghij"), 1, "12345", 4, S("a1234bcdefghij")); 521 test(S("abcdefghij"), 1, "12345", 5, S("a12345bcdefghij")); 522 test(S("abcdefghij"), 1, "1234567890", 0, S("abcdefghij")); 523 test(S("abcdefghij"), 1, "1234567890", 1, S("a1bcdefghij")); 524 test(S("abcdefghij"), 1, "1234567890", 5, S("a12345bcdefghij")); 525 test(S("abcdefghij"), 1, "1234567890", 9, S("a123456789bcdefghij")); 526 test(S("abcdefghij"), 1, "1234567890", 10, S("a1234567890bcdefghij")); 527 test(S("abcdefghij"), 1, "12345678901234567890", 0, S("abcdefghij")); 528 test(S("abcdefghij"), 1, "12345678901234567890", 1, S("a1bcdefghij")); 529 test(S("abcdefghij"), 1, "12345678901234567890", 10, S("a1234567890bcdefghij")); 530 test(S("abcdefghij"), 1, "12345678901234567890", 19, S("a1234567890123456789bcdefghij")); 531 test(S("abcdefghij"), 1, "12345678901234567890", 20, S("a12345678901234567890bcdefghij")); 532 test(S("abcdefghij"), 5, "", 0, S("abcdefghij")); 533 test(S("abcdefghij"), 5, "12345", 0, S("abcdefghij")); 534 test(S("abcdefghij"), 5, "12345", 1, S("abcde1fghij")); 535 test(S("abcdefghij"), 5, "12345", 2, S("abcde12fghij")); 536 test(S("abcdefghij"), 5, "12345", 4, S("abcde1234fghij")); 537 test(S("abcdefghij"), 5, "12345", 5, S("abcde12345fghij")); 538 test(S("abcdefghij"), 5, "1234567890", 0, S("abcdefghij")); 539 test(S("abcdefghij"), 5, "1234567890", 1, S("abcde1fghij")); 540 test(S("abcdefghij"), 5, "1234567890", 5, S("abcde12345fghij")); 541 test(S("abcdefghij"), 5, "1234567890", 9, S("abcde123456789fghij")); 542 test(S("abcdefghij"), 5, "1234567890", 10, S("abcde1234567890fghij")); 543 test(S("abcdefghij"), 5, "12345678901234567890", 0, S("abcdefghij")); 544 test(S("abcdefghij"), 5, "12345678901234567890", 1, S("abcde1fghij")); 545 test(S("abcdefghij"), 5, "12345678901234567890", 10, S("abcde1234567890fghij")); 546 test(S("abcdefghij"), 5, "12345678901234567890", 19, S("abcde1234567890123456789fghij")); 547 test(S("abcdefghij"), 5, "12345678901234567890", 20, S("abcde12345678901234567890fghij")); 548 test(S("abcdefghij"), 9, "", 0, S("abcdefghij")); 549 test(S("abcdefghij"), 9, "12345", 0, S("abcdefghij")); 550 test(S("abcdefghij"), 9, "12345", 1, S("abcdefghi1j")); 551 test(S("abcdefghij"), 9, "12345", 2, S("abcdefghi12j")); 552 test(S("abcdefghij"), 9, "12345", 4, S("abcdefghi1234j")); 553 test(S("abcdefghij"), 9, "12345", 5, S("abcdefghi12345j")); 554 test(S("abcdefghij"), 9, "1234567890", 0, S("abcdefghij")); 555 test(S("abcdefghij"), 9, "1234567890", 1, S("abcdefghi1j")); 556 test(S("abcdefghij"), 9, "1234567890", 5, S("abcdefghi12345j")); 557 test(S("abcdefghij"), 9, "1234567890", 9, S("abcdefghi123456789j")); 558 test(S("abcdefghij"), 9, "1234567890", 10, S("abcdefghi1234567890j")); 559 test(S("abcdefghij"), 9, "12345678901234567890", 0, S("abcdefghij")); 560 test(S("abcdefghij"), 9, "12345678901234567890", 1, S("abcdefghi1j")); 561 test(S("abcdefghij"), 9, "12345678901234567890", 10, S("abcdefghi1234567890j")); 562 test(S("abcdefghij"), 9, "12345678901234567890", 19, S("abcdefghi1234567890123456789j")); 563 test(S("abcdefghij"), 9, "12345678901234567890", 20, S("abcdefghi12345678901234567890j")); 564 test(S("abcdefghij"), 10, "", 0, S("abcdefghij")); 565 test(S("abcdefghij"), 10, "12345", 0, S("abcdefghij")); 566 test(S("abcdefghij"), 10, "12345", 1, S("abcdefghij1")); 567 test(S("abcdefghij"), 10, "12345", 2, S("abcdefghij12")); 568 test(S("abcdefghij"), 10, "12345", 4, S("abcdefghij1234")); 569 test(S("abcdefghij"), 10, "12345", 5, S("abcdefghij12345")); 570 test(S("abcdefghij"), 10, "1234567890", 0, S("abcdefghij")); 571 test(S("abcdefghij"), 10, "1234567890", 1, S("abcdefghij1")); 572 test(S("abcdefghij"), 10, "1234567890", 5, S("abcdefghij12345")); 573 test(S("abcdefghij"), 10, "1234567890", 9, S("abcdefghij123456789")); 574 test(S("abcdefghij"), 10, "1234567890", 10, S("abcdefghij1234567890")); 575 test(S("abcdefghij"), 10, "12345678901234567890", 0, S("abcdefghij")); 576 test(S("abcdefghij"), 10, "12345678901234567890", 1, S("abcdefghij1")); 577 test(S("abcdefghij"), 10, "12345678901234567890", 10, S("abcdefghij1234567890")); 578 test(S("abcdefghij"), 10, "12345678901234567890", 19, S("abcdefghij1234567890123456789")); 579 test(S("abcdefghij"), 10, "12345678901234567890", 20, S("abcdefghij12345678901234567890")); 580 test(S("abcdefghij"), 11, "", 0, S("can't happen")); 581 test(S("abcdefghij"), 11, "12345", 0, S("can't happen")); 582 test(S("abcdefghij"), 11, "12345", 1, S("can't happen")); 583 test(S("abcdefghij"), 11, "12345", 2, S("can't happen")); 584 test(S("abcdefghij"), 11, "12345", 4, S("can't happen")); 585 test(S("abcdefghij"), 11, "12345", 5, S("can't happen")); 586 test(S("abcdefghij"), 11, "1234567890", 0, S("can't happen")); 587 test(S("abcdefghij"), 11, "1234567890", 1, S("can't happen")); 588 test(S("abcdefghij"), 11, "1234567890", 5, S("can't happen")); 589 test(S("abcdefghij"), 11, "1234567890", 9, S("can't happen")); 590 test(S("abcdefghij"), 11, "1234567890", 10, S("can't happen")); 591 test(S("abcdefghij"), 11, "12345678901234567890", 0, S("can't happen")); 592 test(S("abcdefghij"), 11, "12345678901234567890", 1, S("can't happen")); 593 test(S("abcdefghij"), 11, "12345678901234567890", 10, S("can't happen")); 594 test(S("abcdefghij"), 11, "12345678901234567890", 19, S("can't happen")); 595 test(S("abcdefghij"), 11, "12345678901234567890", 20, S("can't happen")); 596 test(S("abcdefghijklmnopqrst"), 0, "", 0, S("abcdefghijklmnopqrst")); 597 test(S("abcdefghijklmnopqrst"), 0, "12345", 0, S("abcdefghijklmnopqrst")); 598 test(S("abcdefghijklmnopqrst"), 0, "12345", 1, S("1abcdefghijklmnopqrst")); 599 test(S("abcdefghijklmnopqrst"), 0, "12345", 2, S("12abcdefghijklmnopqrst")); 600 test(S("abcdefghijklmnopqrst"), 0, "12345", 4, S("1234abcdefghijklmnopqrst")); 601 test(S("abcdefghijklmnopqrst"), 0, "12345", 5, S("12345abcdefghijklmnopqrst")); 602 test(S("abcdefghijklmnopqrst"), 0, "1234567890", 0, S("abcdefghijklmnopqrst")); 603 test(S("abcdefghijklmnopqrst"), 0, "1234567890", 1, S("1abcdefghijklmnopqrst")); 604 test(S("abcdefghijklmnopqrst"), 0, "1234567890", 5, S("12345abcdefghijklmnopqrst")); 605 test(S("abcdefghijklmnopqrst"), 0, "1234567890", 9, S("123456789abcdefghijklmnopqrst")); 606 test(S("abcdefghijklmnopqrst"), 0, "1234567890", 10, S("1234567890abcdefghijklmnopqrst")); 607 test(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); 608 test(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 1, S("1abcdefghijklmnopqrst")); 609 test(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 10, S("1234567890abcdefghijklmnopqrst")); 610 test(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 19, S("1234567890123456789abcdefghijklmnopqrst")); 611 test(S("abcdefghijklmnopqrst"), 0, "12345678901234567890", 20, S("12345678901234567890abcdefghijklmnopqrst")); 612 test(S("abcdefghijklmnopqrst"), 1, "", 0, S("abcdefghijklmnopqrst")); 613 test(S("abcdefghijklmnopqrst"), 1, "12345", 0, S("abcdefghijklmnopqrst")); 614 test(S("abcdefghijklmnopqrst"), 1, "12345", 1, S("a1bcdefghijklmnopqrst")); 615 test(S("abcdefghijklmnopqrst"), 1, "12345", 2, S("a12bcdefghijklmnopqrst")); 616 test(S("abcdefghijklmnopqrst"), 1, "12345", 4, S("a1234bcdefghijklmnopqrst")); 617 test(S("abcdefghijklmnopqrst"), 1, "12345", 5, S("a12345bcdefghijklmnopqrst")); 618 test(S("abcdefghijklmnopqrst"), 1, "1234567890", 0, S("abcdefghijklmnopqrst")); 619 test(S("abcdefghijklmnopqrst"), 1, "1234567890", 1, S("a1bcdefghijklmnopqrst")); 620 test(S("abcdefghijklmnopqrst"), 1, "1234567890", 5, S("a12345bcdefghijklmnopqrst")); 621 test(S("abcdefghijklmnopqrst"), 1, "1234567890", 9, S("a123456789bcdefghijklmnopqrst")); 622 test(S("abcdefghijklmnopqrst"), 1, "1234567890", 10, S("a1234567890bcdefghijklmnopqrst")); 623 test(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); 624 test(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 1, S("a1bcdefghijklmnopqrst")); 625 test(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 10, S("a1234567890bcdefghijklmnopqrst")); 626 test(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 19, S("a1234567890123456789bcdefghijklmnopqrst")); 627 test(S("abcdefghijklmnopqrst"), 1, "12345678901234567890", 20, S("a12345678901234567890bcdefghijklmnopqrst")); 628 test(S("abcdefghijklmnopqrst"), 10, "", 0, S("abcdefghijklmnopqrst")); 629 test(S("abcdefghijklmnopqrst"), 10, "12345", 0, S("abcdefghijklmnopqrst")); 630 test(S("abcdefghijklmnopqrst"), 10, "12345", 1, S("abcdefghij1klmnopqrst")); 631 test(S("abcdefghijklmnopqrst"), 10, "12345", 2, S("abcdefghij12klmnopqrst")); 632 test(S("abcdefghijklmnopqrst"), 10, "12345", 4, S("abcdefghij1234klmnopqrst")); 633 test(S("abcdefghijklmnopqrst"), 10, "12345", 5, S("abcdefghij12345klmnopqrst")); 634 test(S("abcdefghijklmnopqrst"), 10, "1234567890", 0, S("abcdefghijklmnopqrst")); 635 test(S("abcdefghijklmnopqrst"), 10, "1234567890", 1, S("abcdefghij1klmnopqrst")); 636 test(S("abcdefghijklmnopqrst"), 10, "1234567890", 5, S("abcdefghij12345klmnopqrst")); 637 test(S("abcdefghijklmnopqrst"), 10, "1234567890", 9, S("abcdefghij123456789klmnopqrst")); 638 test(S("abcdefghijklmnopqrst"), 10, "1234567890", 10, S("abcdefghij1234567890klmnopqrst")); 639 test(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); 640 test(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 1, S("abcdefghij1klmnopqrst")); 641 test(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 10, S("abcdefghij1234567890klmnopqrst")); 642 test(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 19, S("abcdefghij1234567890123456789klmnopqrst")); 643 test(S("abcdefghijklmnopqrst"), 10, "12345678901234567890", 20, S("abcdefghij12345678901234567890klmnopqrst")); 644 test(S("abcdefghijklmnopqrst"), 19, "", 0, S("abcdefghijklmnopqrst")); 645 test(S("abcdefghijklmnopqrst"), 19, "12345", 0, S("abcdefghijklmnopqrst")); 646 test(S("abcdefghijklmnopqrst"), 19, "12345", 1, S("abcdefghijklmnopqrs1t")); 647 test(S("abcdefghijklmnopqrst"), 19, "12345", 2, S("abcdefghijklmnopqrs12t")); 648 test(S("abcdefghijklmnopqrst"), 19, "12345", 4, S("abcdefghijklmnopqrs1234t")); 649 test(S("abcdefghijklmnopqrst"), 19, "12345", 5, S("abcdefghijklmnopqrs12345t")); 650 test(S("abcdefghijklmnopqrst"), 19, "1234567890", 0, S("abcdefghijklmnopqrst")); 651 test(S("abcdefghijklmnopqrst"), 19, "1234567890", 1, S("abcdefghijklmnopqrs1t")); 652 test(S("abcdefghijklmnopqrst"), 19, "1234567890", 5, S("abcdefghijklmnopqrs12345t")); 653 test(S("abcdefghijklmnopqrst"), 19, "1234567890", 9, S("abcdefghijklmnopqrs123456789t")); 654 test(S("abcdefghijklmnopqrst"), 19, "1234567890", 10, S("abcdefghijklmnopqrs1234567890t")); 655 test(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); 656 test(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 1, S("abcdefghijklmnopqrs1t")); 657 test(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 10, S("abcdefghijklmnopqrs1234567890t")); 658 test(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 19, S("abcdefghijklmnopqrs1234567890123456789t")); 659 test(S("abcdefghijklmnopqrst"), 19, "12345678901234567890", 20, S("abcdefghijklmnopqrs12345678901234567890t")); 660 test(S("abcdefghijklmnopqrst"), 20, "", 0, S("abcdefghijklmnopqrst")); 661 test(S("abcdefghijklmnopqrst"), 20, "12345", 0, S("abcdefghijklmnopqrst")); 662 test(S("abcdefghijklmnopqrst"), 20, "12345", 1, S("abcdefghijklmnopqrst1")); 663 test(S("abcdefghijklmnopqrst"), 20, "12345", 2, S("abcdefghijklmnopqrst12")); 664 test(S("abcdefghijklmnopqrst"), 20, "12345", 4, S("abcdefghijklmnopqrst1234")); 665 test(S("abcdefghijklmnopqrst"), 20, "12345", 5, S("abcdefghijklmnopqrst12345")); 666 test(S("abcdefghijklmnopqrst"), 20, "1234567890", 0, S("abcdefghijklmnopqrst")); 667 test(S("abcdefghijklmnopqrst"), 20, "1234567890", 1, S("abcdefghijklmnopqrst1")); 668 test(S("abcdefghijklmnopqrst"), 20, "1234567890", 5, S("abcdefghijklmnopqrst12345")); 669 test(S("abcdefghijklmnopqrst"), 20, "1234567890", 9, S("abcdefghijklmnopqrst123456789")); 670 test(S("abcdefghijklmnopqrst"), 20, "1234567890", 10, S("abcdefghijklmnopqrst1234567890")); 671 test(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); 672 test(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 1, S("abcdefghijklmnopqrst1")); 673 test(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 10, S("abcdefghijklmnopqrst1234567890")); 674 test(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 19, S("abcdefghijklmnopqrst1234567890123456789")); 675 test(S("abcdefghijklmnopqrst"), 20, "12345678901234567890", 20, S("abcdefghijklmnopqrst12345678901234567890")); 676 test(S("abcdefghijklmnopqrst"), 21, "", 0, S("can't happen")); 677 test(S("abcdefghijklmnopqrst"), 21, "12345", 0, S("can't happen")); 678 test(S("abcdefghijklmnopqrst"), 21, "12345", 1, S("can't happen")); 679 test(S("abcdefghijklmnopqrst"), 21, "12345", 2, S("can't happen")); 680 test(S("abcdefghijklmnopqrst"), 21, "12345", 4, S("can't happen")); 681 test(S("abcdefghijklmnopqrst"), 21, "12345", 5, S("can't happen")); 682 test(S("abcdefghijklmnopqrst"), 21, "1234567890", 0, S("can't happen")); 683 test(S("abcdefghijklmnopqrst"), 21, "1234567890", 1, S("can't happen")); 684 test(S("abcdefghijklmnopqrst"), 21, "1234567890", 5, S("can't happen")); 685 test(S("abcdefghijklmnopqrst"), 21, "1234567890", 9, S("can't happen")); 686 test(S("abcdefghijklmnopqrst"), 21, "1234567890", 10, S("can't happen")); 687 test(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 0, S("can't happen")); 688 test(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 1, S("can't happen")); 689 test(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 10, S("can't happen")); 690 test(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 19, S("can't happen")); 691 test(S("abcdefghijklmnopqrst"), 21, "12345678901234567890", 20, S("can't happen")); 692 } 693#endif 694} 695