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