1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===// 2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant// The LLVM Compiler Infrastructure 4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===// 9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// <string> 11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 126e0a1f458e41c08112a130f50636ced03907e29eHoward Hinnant// basic_string<charT,traits,Allocator>& 13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// insert(size_type pos1, const basic_string& str); 14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <string> 16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <stdexcept> 17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <cassert> 18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 19061d0cc4db18d17bf01ed14c5db0be098205bd47Marshall Clow#include "min_allocator.h" 209dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant 21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnanttemplate <class S> 22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid 23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnanttest(S s, typename S::size_type pos, S str, S expected) 24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant typename S::size_type old_size = s.size(); 26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant S s0 = s; 27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant try 28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant s.insert(pos, str); 30bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(s.__invariants()); 31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(pos <= old_size); 32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(s == expected); 33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant catch (std::out_of_range&) 35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(pos > old_size); 37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(s == s0); 38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 39bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint main() 42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 439dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant { 44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant typedef std::string S; 45bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, S(""), S("")); 46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, S("12345"), S("12345")); 47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, S("1234567890"), S("1234567890")); 48bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, S("12345678901234567890"), S("12345678901234567890")); 49bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, S(""), S("can't happen")); 50bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, S("12345"), S("can't happen")); 51bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, S("1234567890"), S("can't happen")); 52bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, S("12345678901234567890"), S("can't happen")); 53bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, S(""), S("abcde")); 54bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, S("12345"), S("12345abcde")); 55bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, S("1234567890"), S("1234567890abcde")); 56bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, S("12345678901234567890"), S("12345678901234567890abcde")); 57bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, S(""), S("abcde")); 58bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, S("12345"), S("a12345bcde")); 59bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, S("1234567890"), S("a1234567890bcde")); 60bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, S("12345678901234567890"), S("a12345678901234567890bcde")); 61bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, S(""), S("abcde")); 62bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, S("12345"), S("ab12345cde")); 63bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, S("1234567890"), S("ab1234567890cde")); 64bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, S("12345678901234567890"), S("ab12345678901234567890cde")); 65bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, S(""), S("abcde")); 66bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, S("12345"), S("abcd12345e")); 67bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, S("1234567890"), S("abcd1234567890e")); 68bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, S("12345678901234567890"), S("abcd12345678901234567890e")); 69bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, S(""), S("abcde")); 70bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, S("12345"), S("abcde12345")); 71bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, S("1234567890"), S("abcde1234567890")); 72bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, S("12345678901234567890"), S("abcde12345678901234567890")); 73bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, S(""), S("can't happen")); 74bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, S("12345"), S("can't happen")); 75bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, S("1234567890"), S("can't happen")); 76bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, S("12345678901234567890"), S("can't happen")); 77bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, S(""), S("abcdefghij")); 78bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, S("12345"), S("12345abcdefghij")); 79bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, S("1234567890"), S("1234567890abcdefghij")); 80bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, S("12345678901234567890"), S("12345678901234567890abcdefghij")); 81bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, S(""), S("abcdefghij")); 82bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, S("12345"), S("a12345bcdefghij")); 83bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, S("1234567890"), S("a1234567890bcdefghij")); 84bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, S("12345678901234567890"), S("a12345678901234567890bcdefghij")); 85bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, S(""), S("abcdefghij")); 86bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, S("12345"), S("abcde12345fghij")); 87bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, S("1234567890"), S("abcde1234567890fghij")); 88bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, S("12345678901234567890"), S("abcde12345678901234567890fghij")); 89bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, S(""), S("abcdefghij")); 90bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, S("12345"), S("abcdefghi12345j")); 91bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, S("1234567890"), S("abcdefghi1234567890j")); 92bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, S("12345678901234567890"), S("abcdefghi12345678901234567890j")); 93bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, S(""), S("abcdefghij")); 94bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, S("12345"), S("abcdefghij12345")); 95bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, S("1234567890"), S("abcdefghij1234567890")); 96bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, S("12345678901234567890"), S("abcdefghij12345678901234567890")); 97bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, S(""), S("can't happen")); 98bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, S("12345"), S("can't happen")); 99bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, S("1234567890"), S("can't happen")); 100bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, S("12345678901234567890"), S("can't happen")); 101bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, S(""), S("abcdefghijklmnopqrst")); 102bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, S("12345"), S("12345abcdefghijklmnopqrst")); 103bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), S("1234567890abcdefghijklmnopqrst")); 104bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), S("12345678901234567890abcdefghijklmnopqrst")); 105bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, S(""), S("abcdefghijklmnopqrst")); 106bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, S("12345"), S("a12345bcdefghijklmnopqrst")); 107bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), S("a1234567890bcdefghijklmnopqrst")); 108bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), S("a12345678901234567890bcdefghijklmnopqrst")); 109bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, S(""), S("abcdefghijklmnopqrst")); 110bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, S("12345"), S("abcdefghij12345klmnopqrst")); 111bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), S("abcdefghij1234567890klmnopqrst")); 112bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), S("abcdefghij12345678901234567890klmnopqrst")); 113bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, S(""), S("abcdefghijklmnopqrst")); 114bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, S("12345"), S("abcdefghijklmnopqrs12345t")); 115bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), S("abcdefghijklmnopqrs1234567890t")); 116bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), S("abcdefghijklmnopqrs12345678901234567890t")); 117bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, S(""), S("abcdefghijklmnopqrst")); 118bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, S("12345"), S("abcdefghijklmnopqrst12345")); 119bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), S("abcdefghijklmnopqrst1234567890")); 120bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); 121bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, S(""), S("can't happen")); 122bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, S("12345"), S("can't happen")); 123bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), S("can't happen")); 124bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), S("can't happen")); 1259dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant } 1269dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant#if __cplusplus >= 201103L 1279dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant { 1289dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S; 1299dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S(""), 0, S(""), S("")); 1309dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S(""), 0, S("12345"), S("12345")); 1319dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S(""), 0, S("1234567890"), S("1234567890")); 1329dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S(""), 0, S("12345678901234567890"), S("12345678901234567890")); 1339dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S(""), 1, S(""), S("can't happen")); 1349dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S(""), 1, S("12345"), S("can't happen")); 1359dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S(""), 1, S("1234567890"), S("can't happen")); 1369dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S(""), 1, S("12345678901234567890"), S("can't happen")); 1379dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 0, S(""), S("abcde")); 1389dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 0, S("12345"), S("12345abcde")); 1399dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 0, S("1234567890"), S("1234567890abcde")); 1409dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 0, S("12345678901234567890"), S("12345678901234567890abcde")); 1419dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 1, S(""), S("abcde")); 1429dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 1, S("12345"), S("a12345bcde")); 1439dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 1, S("1234567890"), S("a1234567890bcde")); 1449dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 1, S("12345678901234567890"), S("a12345678901234567890bcde")); 1459dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 2, S(""), S("abcde")); 1469dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 2, S("12345"), S("ab12345cde")); 1479dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 2, S("1234567890"), S("ab1234567890cde")); 1489dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 2, S("12345678901234567890"), S("ab12345678901234567890cde")); 1499dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 4, S(""), S("abcde")); 1509dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 4, S("12345"), S("abcd12345e")); 1519dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 4, S("1234567890"), S("abcd1234567890e")); 1529dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 4, S("12345678901234567890"), S("abcd12345678901234567890e")); 1539dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 5, S(""), S("abcde")); 1549dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 5, S("12345"), S("abcde12345")); 1559dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 5, S("1234567890"), S("abcde1234567890")); 1569dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 5, S("12345678901234567890"), S("abcde12345678901234567890")); 1579dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 6, S(""), S("can't happen")); 1589dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 6, S("12345"), S("can't happen")); 1599dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 6, S("1234567890"), S("can't happen")); 1609dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcde"), 6, S("12345678901234567890"), S("can't happen")); 1619dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 0, S(""), S("abcdefghij")); 1629dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 0, S("12345"), S("12345abcdefghij")); 1639dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 0, S("1234567890"), S("1234567890abcdefghij")); 1649dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 0, S("12345678901234567890"), S("12345678901234567890abcdefghij")); 1659dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 1, S(""), S("abcdefghij")); 1669dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 1, S("12345"), S("a12345bcdefghij")); 1679dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 1, S("1234567890"), S("a1234567890bcdefghij")); 1689dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 1, S("12345678901234567890"), S("a12345678901234567890bcdefghij")); 1699dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 5, S(""), S("abcdefghij")); 1709dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 5, S("12345"), S("abcde12345fghij")); 1719dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 5, S("1234567890"), S("abcde1234567890fghij")); 1729dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 5, S("12345678901234567890"), S("abcde12345678901234567890fghij")); 1739dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 9, S(""), S("abcdefghij")); 1749dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 9, S("12345"), S("abcdefghi12345j")); 1759dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 9, S("1234567890"), S("abcdefghi1234567890j")); 1769dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 9, S("12345678901234567890"), S("abcdefghi12345678901234567890j")); 1779dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 10, S(""), S("abcdefghij")); 1789dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 10, S("12345"), S("abcdefghij12345")); 1799dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 10, S("1234567890"), S("abcdefghij1234567890")); 1809dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 10, S("12345678901234567890"), S("abcdefghij12345678901234567890")); 1819dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 11, S(""), S("can't happen")); 1829dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 11, S("12345"), S("can't happen")); 1839dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 11, S("1234567890"), S("can't happen")); 1849dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghij"), 11, S("12345678901234567890"), S("can't happen")); 1859dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, S(""), S("abcdefghijklmnopqrst")); 1869dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, S("12345"), S("12345abcdefghijklmnopqrst")); 1879dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), S("1234567890abcdefghijklmnopqrst")); 1889dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), S("12345678901234567890abcdefghijklmnopqrst")); 1899dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, S(""), S("abcdefghijklmnopqrst")); 1909dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, S("12345"), S("a12345bcdefghijklmnopqrst")); 1919dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), S("a1234567890bcdefghijklmnopqrst")); 1929dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), S("a12345678901234567890bcdefghijklmnopqrst")); 1939dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, S(""), S("abcdefghijklmnopqrst")); 1949dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, S("12345"), S("abcdefghij12345klmnopqrst")); 1959dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), S("abcdefghij1234567890klmnopqrst")); 1969dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), S("abcdefghij12345678901234567890klmnopqrst")); 1979dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, S(""), S("abcdefghijklmnopqrst")); 1989dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, S("12345"), S("abcdefghijklmnopqrs12345t")); 1999dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), S("abcdefghijklmnopqrs1234567890t")); 2009dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), S("abcdefghijklmnopqrs12345678901234567890t")); 2019dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, S(""), S("abcdefghijklmnopqrst")); 2029dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, S("12345"), S("abcdefghijklmnopqrst12345")); 2039dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), S("abcdefghijklmnopqrst1234567890")); 2049dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); 2059dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, S(""), S("can't happen")); 2069dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, S("12345"), S("can't happen")); 2079dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), S("can't happen")); 2089dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), S("can't happen")); 2099dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant } 2109dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant#endif 211bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 212