11e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow//===----------------------------------------------------------------------===// 21e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// 31e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// The LLVM Compiler Infrastructure 41e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// 51e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// This file is dual licensed under the MIT and the University of Illinois Open 61e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// Source Licenses. See LICENSE.TXT for details. 71e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// 81e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow//===----------------------------------------------------------------------===// 91e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 101e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// <string_view> 111e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 121e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// constexpr int compare(size_type pos1, size_type n1, const charT* s) const; 131e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 141e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow#include <string_view> 151e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow#include <cassert> 161e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 171e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow#include "test_macros.h" 181e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow#include "constexpr_char_traits.hpp" 191e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 201e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clowint sign ( int x ) { return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); } 211e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 221e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clowtemplate<typename CharT> 231e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clowvoid test1 ( std::basic_string_view<CharT> sv1, 241e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow size_t pos1, size_t n1, const CharT *s, int expected ) { 2515362334f6582752c667e7670186227d839f92d2Marshall Clow#ifdef TEST_HAS_NO_EXCEPTIONS 2615362334f6582752c667e7670186227d839f92d2Marshall Clow if (pos1 <= sv1.size()) 2715362334f6582752c667e7670186227d839f92d2Marshall Clow assert(sign(sv1.compare(pos1, n1, s)) == sign(expected)); 2815362334f6582752c667e7670186227d839f92d2Marshall Clow#else 291e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow try { 301e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow assert(sign(sv1.compare(pos1, n1, s)) == sign(expected)); 311e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow assert(pos1 <= sv1.size()); 321e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow } 331e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow catch (const std::out_of_range&) { 341e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow assert(pos1 > sv1.size()); 351e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow } 3615362334f6582752c667e7670186227d839f92d2Marshall Clow#endif 371e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow} 381e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 391e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clowtemplate<typename CharT> 401e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clowvoid 411e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clowtest( const CharT *s1, size_t pos1, size_t n1, const CharT *s2, int expected) 421e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow{ 431e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow typedef std::basic_string_view<CharT> string_view_t; 441e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow string_view_t sv1 ( s1 ); 451e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test1 ( sv1, pos1, n1, s2, expected ); 461e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow} 471e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 481e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clowvoid test0() 491e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow{ 501e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("", 0, 0, "", 0); 511e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("", 0, 0, "abcde", -5); 521e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("", 0, 0, "abcdefghij", -10); 531e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("", 0, 0, "abcdefghijklmnopqrst", -20); 541e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("", 0, 1, "", 0); 551e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("", 0, 1, "abcde", -5); 561e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("", 0, 1, "abcdefghij", -10); 571e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("", 0, 1, "abcdefghijklmnopqrst", -20); 581e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("", 1, 0, "", 0); 591e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("", 1, 0, "abcde", 0); 601e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("", 1, 0, "abcdefghij", 0); 611e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("", 1, 0, "abcdefghijklmnopqrst", 0); 621e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 0, "", 0); 631e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 0, "abcde", -5); 641e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 0, "abcdefghij", -10); 651e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 0, "abcdefghijklmnopqrst", -20); 661e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 1, "", 1); 671e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 1, "abcde", -4); 681e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 1, "abcdefghij", -9); 691e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 1, "abcdefghijklmnopqrst", -19); 701e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 2, "", 2); 711e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 2, "abcde", -3); 721e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 2, "abcdefghij", -8); 731e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 2, "abcdefghijklmnopqrst", -18); 741e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 4, "", 4); 751e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 4, "abcde", -1); 761e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 4, "abcdefghij", -6); 771e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 4, "abcdefghijklmnopqrst", -16); 781e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 5, "", 5); 791e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 5, "abcde", 0); 801e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 5, "abcdefghij", -5); 811e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 5, "abcdefghijklmnopqrst", -15); 821e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 6, "", 5); 831e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 6, "abcde", 0); 841e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 6, "abcdefghij", -5); 851e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 6, "abcdefghijklmnopqrst", -15); 861e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 0, "", 0); 871e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 0, "abcde", -5); 881e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 0, "abcdefghij", -10); 891e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 0, "abcdefghijklmnopqrst", -20); 901e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 1, "", 1); 911e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 1, "abcde", 1); 921e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 1, "abcdefghij", 1); 931e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 1, "abcdefghijklmnopqrst", 1); 941e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 2, "", 2); 951e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 2, "abcde", 1); 961e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 2, "abcdefghij", 1); 971e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 2, "abcdefghijklmnopqrst", 1); 981e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 3, "", 3); 991e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 3, "abcde", 1); 1001e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 3, "abcdefghij", 1); 1011e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 3, "abcdefghijklmnopqrst", 1); 1021e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 4, "", 4); 1031e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 4, "abcde", 1); 1041e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 4, "abcdefghij", 1); 1051e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 4, "abcdefghijklmnopqrst", 1); 1061e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 5, "", 4); 1071e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 5, "abcde", 1); 1081e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 5, "abcdefghij", 1); 1091e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 1, 5, "abcdefghijklmnopqrst", 1); 1101e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 2, 0, "", 0); 1111e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 2, 0, "abcde", -5); 1121e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 2, 0, "abcdefghij", -10); 1131e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 2, 0, "abcdefghijklmnopqrst", -20); 1141e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 2, 1, "", 1); 1151e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 2, 1, "abcde", 2); 1161e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 2, 1, "abcdefghij", 2); 1171e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 2, 1, "abcdefghijklmnopqrst", 2); 1181e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 2, 2, "", 2); 1191e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 2, 2, "abcde", 2); 1201e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 2, 2, "abcdefghij", 2); 1211e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 2, 2, "abcdefghijklmnopqrst", 2); 1221e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 2, 3, "", 3); 1231e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 2, 3, "abcde", 2); 1241e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 2, 3, "abcdefghij", 2); 1251e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 2, 3, "abcdefghijklmnopqrst", 2); 1261e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 2, 4, "", 3); 1271e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 2, 4, "abcde", 2); 1281e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 2, 4, "abcdefghij", 2); 1291e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 2, 4, "abcdefghijklmnopqrst", 2); 1301e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 4, 0, "", 0); 1311e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 4, 0, "abcde", -5); 1321e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 4, 0, "abcdefghij", -10); 1331e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 4, 0, "abcdefghijklmnopqrst", -20); 1341e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 4, 1, "", 1); 1351e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 4, 1, "abcde", 4); 1361e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 4, 1, "abcdefghij", 4); 1371e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 4, 1, "abcdefghijklmnopqrst", 4); 1381e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 4, 2, "", 1); 1391e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 4, 2, "abcde", 4); 1401e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 4, 2, "abcdefghij", 4); 1411e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 4, 2, "abcdefghijklmnopqrst", 4); 1421e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 5, 0, "", 0); 1431e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 5, 0, "abcde", -5); 1441e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 5, 0, "abcdefghij", -10); 1451e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 5, 0, "abcdefghijklmnopqrst", -20); 1461e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 5, 1, "", 0); 1471e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 5, 1, "abcde", -5); 1481e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 5, 1, "abcdefghij", -10); 1491e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 5, 1, "abcdefghijklmnopqrst", -20); 1501e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow} 1511e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 1521e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clowvoid test1() 1531e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow{ 1541e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 6, 0, "", 0); 1551e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 6, 0, "abcde", 0); 1561e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 6, 0, "abcdefghij", 0); 1571e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 6, 0, "abcdefghijklmnopqrst", 0); 1581e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 0, "", 0); 1591e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 0, "abcde", -5); 1601e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 0, "abcdefghij", -10); 1611e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", -20); 1621e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 1, "", 1); 1631e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 1, "abcde", -4); 1641e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 1, "abcdefghij", -9); 1651e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", -19); 1661e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 5, "", 5); 1671e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 5, "abcde", 0); 1681e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 5, "abcdefghij", -5); 1691e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", -15); 1701e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 9, "", 9); 1711e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 9, "abcde", 4); 1721e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 9, "abcdefghij", -1); 1731e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", -11); 1741e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 10, "", 10); 1751e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 10, "abcde", 5); 1761e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 10, "abcdefghij", 0); 1771e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", -10); 1781e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 11, "", 10); 1791e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 11, "abcde", 5); 1801e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 11, "abcdefghij", 0); 1811e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", -10); 1821e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 0, "", 0); 1831e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 0, "abcde", -5); 1841e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 0, "abcdefghij", -10); 1851e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", -20); 1861e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 1, "", 1); 1871e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 1, "abcde", 1); 1881e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 1, "abcdefghij", 1); 1891e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1); 1901e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 4, "", 4); 1911e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 4, "abcde", 1); 1921e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 4, "abcdefghij", 1); 1931e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1); 1941e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 8, "", 8); 1951e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 8, "abcde", 1); 1961e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 8, "abcdefghij", 1); 1971e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1); 1981e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 9, "", 9); 1991e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 9, "abcde", 1); 2001e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 9, "abcdefghij", 1); 2011e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1); 2021e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 10, "", 9); 2031e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 10, "abcde", 1); 2041e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 10, "abcdefghij", 1); 2051e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1); 2061e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 0, "", 0); 2071e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 0, "abcde", -5); 2081e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 0, "abcdefghij", -10); 2091e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", -20); 2101e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 1, "", 1); 2111e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 1, "abcde", 5); 2121e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 1, "abcdefghij", 5); 2131e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 5); 2141e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 2, "", 2); 2151e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 2, "abcde", 5); 2161e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 2, "abcdefghij", 5); 2171e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 5); 2181e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 4, "", 4); 2191e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 4, "abcde", 5); 2201e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 4, "abcdefghij", 5); 2211e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 5); 2221e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 5, "", 5); 2231e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 5, "abcde", 5); 2241e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 5, "abcdefghij", 5); 2251e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 5); 2261e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 6, "", 5); 2271e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 6, "abcde", 5); 2281e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 6, "abcdefghij", 5); 2291e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 5); 2301e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 9, 0, "", 0); 2311e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 9, 0, "abcde", -5); 2321e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 9, 0, "abcdefghij", -10); 2331e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", -20); 2341e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 9, 1, "", 1); 2351e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 9, 1, "abcde", 9); 2361e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 9, 1, "abcdefghij", 9); 2371e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 9); 2381e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 9, 2, "", 1); 2391e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 9, 2, "abcde", 9); 2401e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 9, 2, "abcdefghij", 9); 2411e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 9); 2421e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 10, 0, "", 0); 2431e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 10, 0, "abcde", -5); 2441e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 10, 0, "abcdefghij", -10); 2451e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", -20); 2461e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 10, 1, "", 0); 2471e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 10, 1, "abcde", -5); 2481e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 10, 1, "abcdefghij", -10); 2491e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", -20); 2501e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 11, 0, "", 0); 2511e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 11, 0, "abcde", 0); 2521e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 11, 0, "abcdefghij", 0); 2531e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0); 2541e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow} 2551e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 2561e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clowvoid test2() 2571e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow{ 2581e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 0, "", 0); 2591e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 0, "abcde", -5); 2601e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", -10); 2611e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", -20); 2621e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 1, "", 1); 2631e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 1, "abcde", -4); 2641e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", -9); 2651e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", -19); 2661e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 10, "", 10); 2671e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 10, "abcde", 5); 2681e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0); 2691e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", -10); 2701e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 19, "", 19); 2711e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 19, "abcde", 14); 2721e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 9); 2731e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", -1); 2741e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 20, "", 20); 2751e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 20, "abcde", 15); 2761e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 10); 2771e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0); 2781e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 21, "", 20); 2791e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 21, "abcde", 15); 2801e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 10); 2811e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0); 2821e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 0, "", 0); 2831e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 0, "abcde", -5); 2841e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", -10); 2851e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", -20); 2861e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 1, "", 1); 2871e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 1, "abcde", 1); 2881e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1); 2891e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1); 2901e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 9, "", 9); 2911e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 9, "abcde", 1); 2921e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1); 2931e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1); 2941e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 18, "", 18); 2951e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 18, "abcde", 1); 2961e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1); 2971e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1); 2981e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 19, "", 19); 2991e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 19, "abcde", 1); 3001e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1); 3011e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1); 3021e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 20, "", 19); 3031e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 20, "abcde", 1); 3041e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1); 3051e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1); 3061e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 0, "", 0); 3071e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 0, "abcde", -5); 3081e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", -10); 3091e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", -20); 3101e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 1, "", 1); 3111e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 1, "abcde", 10); 3121e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 10); 3131e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10); 3141e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 5, "", 5); 3151e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 5, "abcde", 10); 3161e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 10); 3171e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10); 3181e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 9, "", 9); 3191e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 9, "abcde", 10); 3201e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 10); 3211e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10); 3221e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 10, "", 10); 3231e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 10, "abcde", 10); 3241e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 10); 3251e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10); 3261e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 11, "", 10); 3271e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 11, "abcde", 10); 3281e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 10); 3291e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10); 3301e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 19, 0, "", 0); 3311e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 19, 0, "abcde", -5); 3321e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", -10); 3331e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", -20); 3341e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 19, 1, "", 1); 3351e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 19, 1, "abcde", 19); 3361e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 19); 3371e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 19); 3381e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 19, 2, "", 1); 3391e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 19, 2, "abcde", 19); 3401e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 19); 3411e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 19); 3421e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 20, 0, "", 0); 3431e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 20, 0, "abcde", -5); 3441e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", -10); 3451e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", -20); 3461e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 20, 1, "", 0); 3471e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 20, 1, "abcde", -5); 3481e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", -10); 3491e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", -20); 3501e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 21, 0, "", 0); 3511e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 21, 0, "abcde", 0); 3521e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0); 3531e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0); 3541e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow} 3551e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 3561e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 3571e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clowint main() 3581e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow{ 3591e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test0(); 3601e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test1(); 3611e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test2(); 3621e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 3631e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow { 3641e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("", 0, 0, "", 0); 3651e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("", 0, 0, "abcde", -5); 3661e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("", 0, 0, "abcdefghij", -10); 3671e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("", 0, 0, "abcdefghijklmnopqrst", -20); 3681e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 2, "", 5); 3691e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 6,"abcde", 0); 3701e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 6, "abcdefghij", -5); 3711e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", 0, 6, "abcdefghijklmnopqrst", -15); 3721e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 3, 3, "", 10); 3731e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 3, 3,"abcde", 5); 3741e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 3, 3, "def", 0); 3751e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", 0, 4, "abcdefghijklmnopqrst", -10); 3761e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 5, 5, "", 20); 3771e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 8, "abcde", 15); 3781e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", 0, 12, "abcdefghij", 10); 379eae7e51a7dbde2ac882725973c341400169d93c4Stephan T. Lavavej test("abcdefghijklmnopqrst", 0, static_cast<size_t>(-1), "abcdefghijklmnopqrst", 0); 3801e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow } 3811e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 3821e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow { 3831e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(L"", 0, 0, L"", 0); 3841e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(L"", 0, 0, L"abcde", -5); 3851e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(L"", 0, 0, L"abcdefghij", -10); 3861e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(L"", 0, 0, L"abcdefghijklmnopqrst", -20); 3871e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(L"abcde", 0, 2, L"", 5); 3881e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(L"abcde", 0, 6, L"abcde", 0); 3891e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(L"abcde", 0, 6, L"abcdefghij", -5); 3901e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(L"abcde", 0, 6, L"abcdefghijklmnopqrst", -15); 3911e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(L"abcdefghij", 3, 3, L"", 10); 3921e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(L"abcdefghij", 3, 3, L"abcde", 5); 3931e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(L"abcdefghij", 3, 3, L"def", 0); 3941e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(L"abcdefghij", 0, 4, L"abcdefghijklmnopqrst", -10); 3951e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(L"abcdefghijklmnopqrst", 5, 5, L"", 20); 3961e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(L"abcdefghijklmnopqrst", 0, 8, L"abcde", 15); 3971e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(L"abcdefghijklmnopqrst", 0, 12, L"abcdefghij", 10); 398eae7e51a7dbde2ac882725973c341400169d93c4Stephan T. Lavavej test(L"abcdefghijklmnopqrst", 0, static_cast<size_t>(-1), L"abcdefghijklmnopqrst", 0); 3991e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow } 4001e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 4011e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow#if TEST_STD_VER >= 11 4021e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow { 4031e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(U"", 0, 0, U"", 0); 4041e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(U"", 0, 0, U"abcde", -5); 4051e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(U"", 0, 0, U"abcdefghij", -10); 4061e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(U"", 0, 0, U"abcdefghijklmnopqrst", -20); 4071e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(U"abcde", 0, 2, U"", 5); 4081e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(U"abcde", 0, 6, U"abcde", 0); 4091e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(U"abcde", 0, 6, U"abcdefghij", -5); 4101e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(U"abcde", 0, 6, U"abcdefghijklmnopqrst", -15); 4111e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(U"abcdefghij", 3, 3, U"", 10); 4121e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(U"abcdefghij", 3, 3, U"abcde", 5); 4131e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(U"abcdefghij", 3, 3, U"def", 0); 4141e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(U"abcdefghij", 0, 4, U"abcdefghijklmnopqrst", -10); 4151e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(U"abcdefghijklmnopqrst", 5, 5, U"", 20); 4161e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(U"abcdefghijklmnopqrst", 0, 8, U"abcde", 15); 4171e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(U"abcdefghijklmnopqrst", 0, 12, U"abcdefghij", 10); 418eae7e51a7dbde2ac882725973c341400169d93c4Stephan T. Lavavej test(U"abcdefghijklmnopqrst", 0, static_cast<size_t>(-1), U"abcdefghijklmnopqrst", 0); 4191e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow } 4201e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 4211e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow { 4221e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(u"", 0, 0, u"", 0); 4231e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(u"", 0, 0, u"abcde", -5); 4241e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(u"", 0, 0, u"abcdefghij", -10); 4251e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(u"", 0, 0, u"abcdefghijklmnopqrst", -20); 4261e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(u"abcde", 0, 2, u"", 5); 4271e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(u"abcde", 0, 6, u"abcde", 0); 4281e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(u"abcde", 0, 6, u"abcdefghij", -5); 4291e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(u"abcde", 0, 6, u"abcdefghijklmnopqrst", -15); 4301e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(u"abcdefghij", 3, 3, u"", 10); 4311e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(u"abcdefghij", 3, 3, u"abcde", 5); 4321e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(u"abcdefghij", 3, 3, u"def", 0); 4331e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(u"abcdefghij", 0, 4, u"abcdefghijklmnopqrst", -10); 4341e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(u"abcdefghijklmnopqrst", 5, 5, u"", 20); 4351e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(u"abcdefghijklmnopqrst", 0, 8, u"abcde", 15); 4361e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test(u"abcdefghijklmnopqrst", 0, 12, u"abcdefghij", 10); 437eae7e51a7dbde2ac882725973c341400169d93c4Stephan T. Lavavej test(u"abcdefghijklmnopqrst", 0, static_cast<size_t>(-1), u"abcdefghijklmnopqrst", 0); 4381e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow } 4391e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow#endif 4401e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 4411e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow#if TEST_STD_VER > 11 4421e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow { 4431e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow typedef std::basic_string_view<char, constexpr_char_traits<char>> SV; 4441e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow constexpr SV sv1; 4451e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow constexpr SV sv2 { "abcde", 5 }; 4461e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow static_assert ( sv1.compare(0, 0, "") == 0, "" ); 4471e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow static_assert ( sv1.compare(0, 0, "abcde") == -1, "" ); 4481e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow static_assert ( sv2.compare(0, 2, "") == 1, "" ); 4491e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow static_assert ( sv2.compare(0, 6, "abcde") == 0, "" ); 4501e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow } 4511e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow#endif 4521e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow} 453