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